最后一步到n=1然后怎么解
#include <stdio.h>long recursion(int n);
void main()
{
int n;
long result;
printf("Please input an integer number:\n");
scanf("%d",&n);
result = recursion(n);
printf("%d! = %ld",n,result);
}
long recursion(int n)
{
long temp_result;
if (n<0)
{
printf("Sorry n<0,input error!\n");
}
else if(0 ==n || 1 == n)
{
temp_result = 1;
}
else
{
temp_result = n * recursion(n-1);
}
return temp_result;
}当 N=1的时候temp_result = 1;然后程序怎么走,return 语句为什么是返回6?????????
递归函数内不用定义局部变量,直接返回1或者n * recursion(n-1); 就行了 你好好看看递归函数。这个你先看一下。有什么不会的,再问!自己要相信自己。 函数里面不能这样定义变量,直接return n或return n*recursion(n-1) Beyond@ 发表于 2014-8-17 09:59
函数里面不能这样定义变量,直接return n或return n*recursion(n-1)
???能贴代码吗?
川本姨夫 发表于 2014-8-16 22:32
递归函数内不用定义局部变量,直接返回1或者n * recursion(n-1); 就行了
返回1什么意思 流行语 发表于 2014-8-17 08:09
你好好看看递归函数。这个你先看一下。有什么不会的,再问!自己要相信自己。
我都不知道看哪页? Beyond@ 发表于 2014-8-17 09:59
函数里面不能这样定义变量,直接return n或return n*recursion(n-1)
我问的是N=1;之后怎么×1和返回为什么是6,不是1 雨水 发表于 2014-8-17 13:49
???能贴代码吗?
看看是不是这样
long recursion(int n)
{
if (n<0)
{
printf("Sorry n<0,input error!\n");
}
else if(0 ==n || 1 == n)
{
return n;
}
else
{
returnn * recursion(n-1);
}
} Beyond@ 发表于 2014-8-17 13:59
看看是不是这样
long recursion(int n)
{
这个到了n = 1;之后return 1;让后就相当于×1吗? 雨水 发表于 2014-8-17 14:32
这个到了n = 1;之后return 1;让后就相当于×1吗?
我不清楚你程序要实现的功能啊 如果我没猜错的话,你想实现的是n的阶乘,这是我给你修改的代码,你可以参考一下。。。
#include <stdio.h>
long recursion(int n);
void main()
{
int n;
long result;
printf("Please input an integer number:\n");
scanf("%d",&n);
result = recursion(n);
if(result!=-1)
{
printf("%d! = %ld\n",n,result);
}
}
long recursion(int n)
{
long temp_result=1;
if (n<0)
{
printf("Sorry n<0,input error!\n");
return -1;
}
else
{
int i;
for(i=1;i<=n;i++)
{
temp_result *= i;
}
}
return temp_result;
} 不会C啊,只能旁观了 Beyond@ 发表于 2014-8-17 14:47
我不清楚你程序要实现的功能啊
求阶乘啊 一个人在战斗 发表于 2014-8-17 15:00
如果我没猜错的话,你想实现的是n的阶乘,这是我给你修改的代码,你可以参考一下。。。
这个好理解一点,但我想理解递归 川本姨夫 发表于 2014-8-16 22:32
递归函数内不用定义局部变量,直接返回1或者n * recursion(n-1); 就行了
递归到n=1的时候怎么退出? int F(int n)
{
if(n < 0){
printf("错误,n小于0\n");
return -1;
}
else
return n==0?1:n*F(n-1);
} long recursion(int n)
{
if (0 == n || 1 == n)
{
return 1;
}
else if (n > 1)
{
return n * recursion(n - 1);
}
return 0;
} 旁听生
递归函数不太会~
页:
[1]
2