当前位置: 代码迷 >> C语言 >> 递归函数
  详细解决方案

递归函数

热度:445   发布时间:2006-12-04 13:06:07.0
递归函数
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-1的区别在于前者会改变n,而后者不会,虽然在表面上看起来差不多,但实质上相差甚远.
在递归中,有3个方面需要掌握.
1.递归出口(这里是if(n==0))
2.递归式 即 f(n)=n*f(n-1);
3.界限函数 ,即要使得规模向出口靠近,即这里的n--;
----------------解决方案--------------------------------------------------------
不好意思,浪费大家时间了
把函数写到main里去了
难怪有错.
----------------解决方案--------------------------------------------------------

  相关解决方案