C语言用递归算法实现:整数模幂运算 x的r次模p.用循环控制比较简单,但是自己用递归写了个运行时结果不
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 14:37:45
C语言用递归算法实现:整数模幂运算 x的r次模p.用循环控制比较简单,但是自己用递归写了个运行时结果不
算法思想如下,希望用递归实现:
(1) a←x,b←r ,c←1
(2)若b=0,则输出c,结束.
(3)若b是正的偶数,则b← b/2,a ← a2 mod p,转(3)
否则,转(4).
(4) b←b-1,c ←a*c mod p ,转(2).
此方法为数论中的方法,上面描述的问题希望用此方法用递归调用实现,
算法思想如下,希望用递归实现:
(1) a←x,b←r ,c←1
(2)若b=0,则输出c,结束.
(3)若b是正的偶数,则b← b/2,a ← a2 mod p,转(3)
否则,转(4).
(4) b←b-1,c ←a*c mod p ,转(2).
此方法为数论中的方法,上面描述的问题希望用此方法用递归调用实现,
需要输入x,r,p
#include
void Run(int x,int r,int p,int t)
{
int a,b,c;
a=x;b=r;c=t;
if(b==0)
{
printf("%d",c);
return;
}
if((b>0)&&(b%2==0))
{
b=b/2;
a=(a*a)%p;
}
else
{
b=b-1;
c=(a*c)%p;
}
Run(a,b,p,c);
}
void main()
{
int x,r,p,t=1;
printf("please enter x :");
scanf("%d",&x);
printf("please enter r :");
scanf("%d",&r);
printf("please enter p :");
scanf("%d",&p);
Run(x,r,p,t);
}
#include
void Run(int x,int r,int p,int t)
{
int a,b,c;
a=x;b=r;c=t;
if(b==0)
{
printf("%d",c);
return;
}
if((b>0)&&(b%2==0))
{
b=b/2;
a=(a*a)%p;
}
else
{
b=b-1;
c=(a*c)%p;
}
Run(a,b,p,c);
}
void main()
{
int x,r,p,t=1;
printf("please enter x :");
scanf("%d",&x);
printf("please enter r :");
scanf("%d",&r);
printf("please enter p :");
scanf("%d",&p);
Run(x,r,p,t);
}
C语言用递归算法实现:整数模幂运算 x的r次模p.用循环控制比较简单,但是自己用递归写了个运行时结果不
C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题
c语言 :用递归算法求整数m和n的最大公约数.为什么说有错误?
C语言,用递归求整数m,n的最大公约数.
递归算法举例不许用if,不许用for循环算出10到20相加的和,递归算法怎么实现
C语言用非递归算法求数列.
用递归的方法编写函数求Fibonacci级数,观察递归调用的过程.用C语言写.
[C语言]用递归算法编写一个程序求Fibonacci数列的第n项值
pascal语言:用”递归算法”求2个自然数的最大公约数与最小公倍数
二叉树中序遍历非递归算法(c语言实现)
数据结构试验(用C语言)建立一棵二叉树,并用递归或者非递归的算法分别用先序.中序和后序遍历、谢谢
斐波那契数列的算法用C语言写递推法,递归法以及两者的效率比较.两者效率比较需要说明原因,越具体越好!