| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1092 人关注过本帖
标题:[求助]关于用递归求5!的方法
只看楼主 加入收藏
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
 问题点数:0 回复次数:10 
[求助]关于用递归求5!的方法
用递归的方法求5!的值 运行后屏幕上什么结果也没有
愿各位指点错误 先谢谢了
int digui(int a)
{ int b;
while(a!=1) {b=a*digui(a-1);}
if(a==1) return 1;
else return b;
}
main()
{ int a;
a=digui(5);
printf("%d",a);
}
搜索更多相关主题的帖子: 递归 
2007-07-16 21:07
kisscjy
Rank: 1
等 级:新手上路
帖 子:217
专家分:0
注 册:2007-4-9
收藏
得分:0 
在这里加上一句~~~

int digui(int a)
{ int b;
while(a!=1)
{
return b=a*digui(a-1);
}
if(a==1) return 1;
else return b;
}
main()
{ int a;
a=digui(5);
printf("%d",a);
}

缺少一个return 了~~~

每当我一晚写下70,80个程序时,你还真以为,这都是我一个人干的.....不过说真的,其实都是抄书的~~ ^@^
2007-07-16 21:33
げ訾澐み
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-7-18
收藏
得分:0 
高手解答下为什么 要用个 return啊

2007-07-19 10:56
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
else return b

这句是错误的,在递归出栈的时候,b的值仍然处于未定义,还没计算完。

Fight  to win  or  die...
2007-07-19 11:43
haihui282
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-19
收藏
得分:0 
#include<stdio.h>
#include<conio.h>
int digui(int a)
{
int b;
while(a!=1)
{
return b=a*digui(a-1);
}
if(a==1) return 1;
else return b;
}
int main()
{
int a;
a=digui(5);
printf("%d",a);
getch();
return 0;
}

加个return。就是说给一个返回值。 MAIN是 int 类型的 就返回一个0;
加一个getch();让程序终止一下。在屏幕上输出,不然跳过去了。看不到结果
2007-07-19 15:20
yihui_723
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-11
收藏
得分:0 
各位大侠,我是个初学者,不过个人认为既然是递归调用函数,是不是就不必用循环语句了啊?
2007-07-19 18:49
yihui_723
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-11
收藏
得分:0 

#include<iostream.h>
long fac(long n)
{
long f;
if(n<0)cout<<"error!"<<endl;
else if(n==0)f=1;
else f=n*fac(n-1);
return f;}

void main()
{
long x;
cout<<"Please enter the number!"<<endl;
cin>>x;
cout<<"The result is "<<fac(x)<<endl;}
我自己写了个,运行没有问题,你试试看吧!

2007-07-19 18:56
小木头
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-12-30
收藏
得分:0 
#include<iostream>
using namespace std;
double fac(int n)
{
int s=1;
for (int i=n;i>0;i--)
{
if (s<=s*i)
s=s*i;
else
{
cout<<"over in area"<<endl;

};
}
return s;
}
int main()
{
int n;
cout<<"请输入一个正整数n(n<=12)\n";
cin>>n;
cout<<"则n的阶乘是:"<<fac(n)<<endl;getchar();getchar();return 0;
}
不过会溢出,没有理解一楼说的,else return b这句是错误的,在递归出栈的时候,b的值仍然处于未定义,还没计算完。为什么?
2007-07-19 19:17
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
收藏
得分:0 
以下是引用yihui_723在2007-7-19 18:49:17的发言:
各位大侠,我是个初学者,不过个人认为既然是递归调用函数,是不是就不必用循环语句了啊?

确实是 其实只要用个 if语句 就好了
当时傻了 没想到 还一个人搞了好久


I will come back!
2007-07-20 10:10
Jackzdong
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-6-1
收藏
得分:0 
#include <iostream>
using namespace std;
int digui(int a)
{ int b;
if(a!=1) return b=a*digui(a-1);
if(a==1) return 1;
}
main()
{ int a;
a=digui(5);
printf("%d",a);
}
2007-07-20 10:21
快速回复:[求助]关于用递归求5!的方法
数据加载中...
 
   



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

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