程序不知道出了什么问题
include <stdio.h>long factorial(int n);
void main()
{
long s;
int n;
scanf("%d",&n);
s=factorial(n);
printf("%ld\n",s);
}
long factorial(int n)
{
long p;
do
{
p = factorial(n-1) * n;
}
while(n-1<=0);
return p;
} 本帖最后由 牡丹花下死做鬼 于 2013-10-5 14:23 编辑
//include <stdio.h>
#include<stdio.h>//漏了#
long factorial(int n);
void main()
{
long s;
int n;
scanf("%d",&n);
s=factorial(n);
printf("%ld\n",s);
}
long factorial(int n)
{
long p;
do
{
p = factorial(n-1) * n;
}
while(n-1<=0);
return p;
} 牡丹花下死做鬼 发表于 2013-10-5 14:14 static/image/common/back.gif
我加上了#号,但是运行时不能运算出希望的结果,我输入一个数字时只能打印出数字本身,不能递归运算出阶乘 小兵 发表于 2013-10-5 14:25 static/image/common/back.gif
我加上了#号,但是运行时不能运算出希望的结果,我输入一个数字时只能打印出数字本身,不能递归运算出阶乘 ...
//include <stdio.h>
#include<stdio.h>//漏了#
long factorial(int n);
void main()
{
long s;
int n;
scanf("%d",&n);
s=factorial(n);
printf("%ld\n",s);
}
long factorial(int n)
{
long p;
if(n > 1)
{
p = factorial(n-1) * n;
}
else
{
return 1;
}
return p;
} long factorial(int n)
{
if(n==0||n==1)
return 1;
else
return factorial(n-1)*n;
} 我明白用if语句可以实现,现在我想通过while语句完成循环,但是出现了问题,所以就不知道症结在什么地方了?
tsembrace 发表于 2013-10-5 14:36 static/image/common/back.gif
long factorial(int n)
{
我明白用if语句可以实现,现在我想通过while语句完成循环,但是出现了问题,所以就不知道症结在什么地方了?
小兵 发表于 2013-10-5 14:38 static/image/common/back.gif
我明白用if语句可以实现,现在我想通过while语句完成循环,但是出现了问题,所以就不知道症结在什么地方了? ...
你这么写就是死循环啊 n的值是不会变的呀
谁写递归用循环啊
n-1完了后 还需要返回 n 。 然后再循环n-1。。。 然后再阶乘完 在返回n-1 无线循环
不知道我说的对不对 应该是这个意思 新手!! 牡丹花下死做鬼 发表于 2013-10-5 14:50 static/image/common/back.gif
你这么写就是死循环啊 n的值是不会变的呀
谁写递归用循环啊
哦,明白了,谢谢指点! 小兵 发表于 2013-10-5 14:39 static/image/common/back.gif
我明白用if语句可以实现,现在我想通过while语句完成循环,但是出现了问题,所以就不知道症结在什么地方了 ...
问题多了
long factorial(int n)
{
long p=1;
if(n==0)
return p;
do{
p*=n;
}while(--n>=0);
return p;
}
页:
[1]