递归实现指数函数c语言 递归函数c++简单实例

c语言递归和循环的区别

递归是函数体中调用自己,如果不加控制,将无休止的调用自己,直到堆栈溢出。循环是反复执行某一段区域内的代码,如果不加控制,就会形成死循环。所以不管是递归还是循环,都要设定一定的条件,以结束递归或循环。实际问题中,有一些问题是递归的,这样的问题使用递归程序解决感觉会自然些,程序也会简单些,但是,递归要经常调用函数,开销(内存、时间)大,有些问题就不适宜使用,循环不需要调用自身,甚至可以不调用函数,效率高,不过,要将递归问题改成非递归,可能就要动动脑筋。上例中pow2 函数实现部分指数计算功能,(b, n-1) =3 这个提法有问题,因为递归调用时,在返回之前系统堆栈上有一大堆(从第一次调用知道条件满足时的次数)的该递归函数,条件满足后这一系列的函数依次返回。上述函数运行过程是这样的: 执行主函数的 pow2(3, 2); 后:1: b = 3 n = 2 此时 n 0; pow2 调用自身(即递归调用): pow2(b, n-1) * b 后:2: b = 3 n = 1 此时 n 0; pow2 调用自身(即递归调用): pow2(b, n-1) * b 后:3: b = 3 n = 0 此时 n = 0, if (n = 0) 条件满足 1; 递归函数第一次(函数最后依次递归调用)返回,值为 14: 上一次 pow2(b, n-1) 返回值为 1,return pow2(b, n-1) * b; 所以本次(第2次)返回 35: 上一次 pow2(b, n-1) 返回值为 3,return pow2(b, n-1) * b; 所以本次(第1次)返回 96: 函数main得到 pow2 的返回值 9

成都创新互联公司于2013年开始,先为鄂尔多斯等服务建站,鄂尔多斯等地企业,进行企业商务咨询服务。为鄂尔多斯企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

C语言题.用递归法写一个求幂的函数,并在主函数实现调用.要用c语言,不要c++的。 提示

/*x^n的值必须小于32767,否则输出的就是负数。因为,int只有这么大,正常的pow函数应该是float型或是double型,参数也应是float或是double型。*/

#include stdio.h

int power(int x,int n)

{

if (n1)

{

   return x*power(x,n-1);

}

else

{

   if (n0)

       return x;

   else

        return 1;

}

}

void main()

{

int x,n;

printf("input x,n:");

scanf("%d%d",x,n);

printf("%d",power(x,n));

getch();

clrscr();

}

C语言 用递归函数求数值的整数次幂 double power(double x,int p)输入负整数次幂时出现问题

double power_negative(double n,int p)

{

double pow = 1;

int q;

q=-p;

if(q0)

pow = power_negative(n,1-q) / n;

return pow;

}

改成这样,虽然你那个写的是递归调用,但是返回的却是1/pow,那么就会是0.5 * 2 * 0.5 * 2 * 0.5这样的形式返回,所以最终无论是多少,结果都是0.5,而且递归时应该用1-q,因为你调用负数求幂,必须使参数为负才会正确

C语言编程问题

#include stdio.h

#include math.h

int fact(int n) //递归函数实现1+2+3+。。。+n

{

if(n==1)

return n;

else

return n+fact(n-1);

}

double cal(int x,int n) //实现计算功能

{

return pow(x,n)/fact(n); //pow()为指数函数

}

void main()

{

int x,n;

printf("请输入x和n,用逗号分开:");

scanf("%d,%d",x,n); //输入两个数

printf("%lf\n",cal(x,n)); //输出结果

}


当前名称:递归实现指数函数c语言 递归函数c++简单实例
链接地址:http://cdiso.cn/article/hhcgps.html

其他资讯