| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3824 人关注过本帖
标题:如何理解递归调用?
只看楼主 加入收藏
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
结帖率:80%
收藏
 问题点数:0 回复次数:12 
如何理解递归调用?
要如何理解递归调用呢?
如下面的题:
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 
2007-12-04 20:18
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
举个简单例子,计算自然数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的值在递归的时候是不变的。
2007-12-04 20:35
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 
想要知道计算机是怎么真正解决这个递归实现 为什么就有那么巧的技巧
问微软吧``  问.. 比尔.盖次

准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2007-12-05 01:31
行文
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-11-2
收藏
得分:0 
简单理解就是自己调用自己!

我们不是因为失败而放弃,而是因为倦怠而失败。
2007-12-05 10:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
看我写的递归滴应该对你理解递归有点帮助吧

倚天照海花无数,流水高山心自知。
2007-12-05 10:56
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
收藏
得分:0 
用了一次,又来一次,再来一次,直到条件不符合
反正就是 这样
2007-12-05 12:29
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
我也知道是自己调用自己...
主要是下面的当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;
我想知道的是这样的..
2007-12-05 12:39
soya
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-12-6
收藏
得分:0 
当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~~~
2007-12-06 11:09
redriver
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-12-5
收藏
得分:0 
递归调用...某种程度上是一种对堆栈的操作....看看汇编,也许对理解有点帮助.....
2007-12-06 12:17
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
啊```还要去看汇编啊`````有那个必要吗??

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-12-06 12:30
快速回复:如何理解递归调用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012517 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved