递归函数
int fac(int n){
if(n==0)
return 1;
else return n*fac(n-1);
}
请问错在哪里?
----------------解决方案--------------------------------------------------------
n--
----------------解决方案--------------------------------------------------------
应该改为:
int fac(int n)
{
if(n<=0)
return 0;
else if(n==1) return 1;
else return n*fac(n-1);
}
----------------解决方案--------------------------------------------------------
是编译报错
error C2601: 'fac' : local function definitions are illegal
----------------解决方案--------------------------------------------------------
int fac(int n)
{
if(n<=0)
return 0;
else if(n==1) return 1;
else return n*fac(n--);
}
差不多吧
----------------解决方案--------------------------------------------------------
以下是引用菜鸟上路在2006-12-4 13:07:57的发言:
n--
n--
这个和n-1的区别在于前者会改变n,而后者不会,虽然在表面上看起来差不多,但实质上相差甚远.
在递归中,有3个方面需要掌握.
1.递归出口(这里是if(n==0))
2.递归式 即 f(n)=n*f(n-1);
3.界限函数 ,即要使得规模向出口靠近,即这里的n--;
----------------解决方案--------------------------------------------------------
不好意思,浪费大家时间了
把函数写到main里去了
难怪有错.
----------------解决方案--------------------------------------------------------