主题:求一个递归算法!!
wadelee
[专家分:90] 发布于 2006-05-11 22:43:00
计算某一个整数的阶乘,用户需要在程序计算完结果后在进行另外一次计算然后再进行一次再重复计算直到退出。
要求在计算整数阶乘的递归函数体中实现进行下一次计算的输入(而不是在main函数中实现)。
回复列表 (共10个回复)
沙发
rickone [专家分:15390] 发布于 2006-05-15 17:11:00
不明白你说什么,说清楚些
板凳
boxertony [专家分:23030] 发布于 2006-05-16 09:25:00
// 不知道这样是否满足楼主的要求?(好奇怪的要求啊!)
int n;
int factorial()
{
assert(n >= 0);
if(n==0)
{
scanf("%d", &n);
return 1;
}
else
{
int k = n--;
return k*factorial();
}
}
int main()
{
scanf("%d", &n);
while(n >= 0)
{
printf("%d\n", factorial());
}
return 0;
}
3 楼
wadelee [专家分:90] 发布于 2006-05-20 17:44:00
谢谢二楼的答复。不过我不是要你这种算法。
你的不是在main中用while实现循环输入吗。
我希望是在递归中实现循环输入。
这是我同学问的一个问题,我也感到很无奈(简直让我抓狂),想了好久都想不出来。就来论坛上问问。
4 楼
boxertony [专家分:23030] 发布于 2006-05-20 19:23:00
我的明明不是在main函数中输入的呀(当然第一次除外,因为总得有个输入值啊),main函数的while循环只是输出。
5 楼
lecoo [专家分:0] 发布于 2006-05-21 22:30:00
#include <stdio.h>
int fun(int n){
if(n){
return n*fun(n-1);
}
else return 1;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n",fun(n));
return 0;
}
6 楼
wadelee [专家分:90] 发布于 2006-05-28 13:42:00
恩!2楼的。我看明白了~!
不过这个你调试了吗??
谢谢你~!
7 楼
boxertony [专家分:23030] 发布于 2006-05-28 23:12:00
调试过呀,有问题吗?
8 楼
rickone [专家分:15390] 发布于 2006-05-29 04:40:00
#include<stdio.h>
int tag=0;
int main(int n)
{
if(tag==0){tag=1;n=0;}//run by first time
if(n==0)//goin' to input
{
scanf("%d",&n);
if(n==0)
return 0;
printf("%d!=%d\n",n,main(n));
main(0);
}
else
if(n==1)
return 1;
else
return n*main(n-1);
return 0;
}
感觉像是在玩游戏...我这个VC调试过
9 楼
雨523 [专家分:200] 发布于 2006-05-29 08:08:00
特别的要求特别地写
10 楼
wadelee [专家分:90] 发布于 2006-06-02 23:23:00
恩 谢谢了~!
我来回复