| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 1199 人关注过本帖
标题:如何理解递归调用?
收藏  订阅  推荐  打印 
封闭
Rank: 3Rank: 3
等级:中级会员
帖子:238
积分:2576
注册:2007-9-14
如何理解递归调用?

要如何理解递归调用呢?
如下面的题:
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-4 20:18
lonmaor
Rank: 12Rank: 12Rank: 12
来自:Zz.
等级:版主
威望:11
帖子:572
积分:5084
注册:2007-11-27

举个简单例子,计算自然数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-4 20:35
孤魂居士
Rank: 4
来自:老A(中国地大)
等级:高级会员
威望:2
帖子:869
积分:8838
注册:2007-5-21

想要知道计算机是怎么真正解决这个递归实现 为什么就有那么巧的技巧
问微软吧``  问.. 比尔.盖次

想用3年成为编程高手10年都成不了,准备用10年成为编程高手的3年就成为了编程高手
2007-12-5 01:31
行文
Rank: 1
等级:新手上路
帖子:32
积分:432
注册:2007-11-2
简单理解就是自己调用自己!


我们不是因为失败而放弃,而是因为倦怠而失败。
2007-12-5 10:32
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:93
帖子:9519
积分:95044
注册:2006-5-23

看我写的递归滴应该对你理解递归有点帮助吧

倚天照海花无数,流水高山心自知。
2007-12-5 10:56
beyond0702
Rank: 3Rank: 3
来自: 桂 林
等级:中级会员
帖子:211
积分:2368
注册:2007-11-17

用了一次,又来一次,再来一次,直到条件不符合
反正就是 这样
2007-12-5 12:29
封闭
Rank: 3Rank: 3
等级:中级会员
帖子:238
积分:2576
注册:2007-9-14

我也知道是自己调用自己...
主要是下面的当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-5 12:39
soya
Rank: 1
等级:新手上路
帖子:5
积分:164
注册:2007-12-6

当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-6 11:09
redriver
Rank: 1
等级:新手上路
帖子:12
积分:228
注册:2007-12-5

递归调用...某种程度上是一种对堆栈的操作....看看汇编,也许对理解有点帮助.....
2007-12-6 12:17
死了都要C
Rank: 12Rank: 12Rank: 12
来自:四川成都
等级:贵宾
威望:13
帖子:1507
积分:15568
注册:2006-12-7

啊```还要去看汇编啊`````有那个必要吗??

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
http://yzfy.org
2007-12-6 12:30
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.061735 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved