| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 889 人关注过本帖
标题:请教递归问题
只看楼主 加入收藏
木工
Rank: 2
等 级:论坛游民
帖 子:45
专家分:36
注 册:2010-3-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
请教递归问题
打印1到5的阶乘值。
int fac(int n)
{static int f=1;
 f=f*n;
 return(f);
}
main()
{int i;
 for(i=1;i<=5;i++)
 printf("%d!=%d\n",i,fac(i));
}
请问int fac(int n)
{static int f=1;
 f=f*n;
 return(f);
}
递归的实现我弄不明白,请指点
搜索更多相关主题的帖子: 递归 
2010-10-02 11:02
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:5 
static int f=1;这是定义成静态变量,每次调用函数fac时保留上次的数值.
当n=1时,f=f*n=1!;
当n=2时,f=1*2=2!;依此类推直到n=5,f=4!*5=5!;
如果f定义为:int f=1,则每次调用fac时f先赋值为1,在计算f=f*n,并不是所要的阶乘值.

帮人《---》帮己
2010-10-02 11:50
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:2 
以下是引用nydzdoking在2010-10-2 11:48:09的发言:

当然所谓顿悟,是需你长期努力的学习结果!
不许卖广告

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-02 13:00
Crocodile_JX
Rank: 5Rank: 5
等 级:职业侠客
帖 子:161
专家分:335
注 册:2010-9-13
收藏
得分:1 
int fac(int n)
{static int f=1;
f=f*n;
return(f);
}
这不是求阶乘的函数!也就是求出来的结果不是阶乘值。
2010-10-02 13:08
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:1 
以下是引用Crocodile_JX在2010-10-2 13:08:45的发言:

这不是求阶乘的函数!也就是求出来的结果不是阶乘值。
不是递归

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-02 13:14
Crocodile_JX
Rank: 5Rank: 5
等 级:职业侠客
帖 子:161
专家分:335
注 册:2010-9-13
收藏
得分:5 
不好意思,搞错了!没有看到 static 这个关健字。
int fac(int n)
{static int f=1;  /*这个声明 f 是一个静态的局部变量,它的初始值为 1,第一次调用结束后它的值为 2,因为它是静态局部变量,在函数调用结束后,它并没有被释放, 仍保留 f = 2。在第二次调用fac()函数时, f 的值为 2(上次调用结束时的值),后面的就以此类推*/

f=f*n;
return(f);
}


不知道这样说 你明不明白?
2010-10-02 13:20
Crocodile_JX
Rank: 5Rank: 5
等 级:职业侠客
帖 子:161
专家分:335
注 册:2010-9-13
收藏
得分:1 
呵呵...  这确实不是递归。 只是简单地重复调用同一个函数。
2010-10-02 13:22
木工
Rank: 2
等 级:论坛游民
帖 子:45
专家分:36
注 册:2010-3-18
收藏
得分:0 
8楼说的我明白了,谢谢,其实就是用static 后fac(1)=1,fac(2)=fac(1)*2,fac(3)=fac(2)*3,...........依此类推

[ 本帖最后由 木工 于 2010-10-2 14:47 编辑 ]
2010-10-02 14:40
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:1 
根本就不是递归

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-02 14:46
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 2楼 nydzdoking
让程序自己画

我就是真命天子,顺我者生,逆我者死!
2010-10-02 15:33
快速回复:请教递归问题
数据加载中...
 
   



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

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