当前位置: 代码迷 >> C语言 >> 如何理解递归调用?
  详细解决方案

如何理解递归调用?

热度:181   发布时间:2007-12-04 20:18:10.0
如何理解递归调用?
要如何理解递归调用呢?
如下面的题:
main()
{
int a,b;
long power(),t;
clrscr();
printf("输入两个整数:");
scanf("%d,%d",&a,&b);
t=power(a,b);
printf("%d^%d=%ld",a,b,t);
}
long power(x,n)
int x,n;
{
long y;
if(n>0)
y=x*power(x,n-1);
else y=1;
return y;
}

红色部分不是很能理解..
只知道当n=0的时候,y=1;
然后返回...
但是返回的时候就不知道要怎么处理了.

还有请各位大虾帮忙解答下...
先谢过了...
搜索更多相关的解决方案: 递归  long  power  int  

----------------解决方案--------------------------------------------------------
举个简单例子,计算自然数n的阶乘函数
int pow(n)
{
if (n=1)
    return 1; //当n=1时,n的阶乘=1
else //当n>1时,n的阶乘=(n-1)的阶乘 * n
    return n * pow(n-1);
}

楼主举的例子中不过多了一个形参x,x的值在递归的时候是不变的。
----------------解决方案--------------------------------------------------------
想要知道计算机是怎么真正解决这个递归实现 为什么就有那么巧的技巧
问微软吧``  问.. 比尔.盖次
----------------解决方案--------------------------------------------------------
简单理解就是自己调用自己!

----------------解决方案--------------------------------------------------------
看我写的递归滴应该对你理解递归有点帮助吧
----------------解决方案--------------------------------------------------------
用了一次,又来一次,再来一次,直到条件不符合
反正就是 这样
----------------解决方案--------------------------------------------------------
我也知道是自己调用自己...
主要是下面的当n=0时.也就是不成立的时候.....
为什么返回后是y=x*power(x,n-1);?
这道题是求一个数的n次方.
例如:
x=3;n=4;
当n=0的时候。y就等于1;
返回后为什么是这样的:
y=x*power(x,n-1)=3;
y=x*power(x,n-1)=9;
y=x*power(x,n-1)=27;
y=x*power(x,n-1)=81;
我想知道的是这样的..
----------------解决方案--------------------------------------------------------
当y=1的时候power函数返回值是1 x*power(x,n-1)  即x*1 x的值为3  得值3  y的值为3 函数返回值为3即x*power(x,n-1)   3*3=9  然后y的值为9  函数返回值为9 x*power(x,n-1) 即3*9 值为27 以此类推。。。能理解吗?  我也是刚学c语言 如有不对的地方请指出!我的qq379932900有意一起探讨的可以加我qq~~~
----------------解决方案--------------------------------------------------------
递归调用...某种程度上是一种对堆栈的操作....看看汇编,也许对理解有点帮助.....
----------------解决方案--------------------------------------------------------
啊```还要去看汇编啊`````有那个必要吗??
----------------解决方案--------------------------------------------------------
  相关解决方案