读书人

请问一个递归有关问题

发布时间: 2012-02-04 15:43:09 作者: rapoo

请教一个递归问题
用递归方法求n!
#include <iostream>
using namespace std;
long fac(int);
int main()
{int n;
long y;
cout < < "please input an integer: ";
cin> > n;
y=fac(n);
cout < <n < < "!= " < <y < <endl;
return 0;
}

long fac(int n)
{long f;
if(n <0)
{cout < < "n <0,data error! " < <endl;
f=-1;} //如果输入负数,报错并以-1作为返回值 我删除f=-1后,程序还是能正常运行,那么请问
这里f=-1的作用是什么?用它有什么必要?
else if(n==0||n==1) f=1;
else f=fac(n-1)*n;
return f;
}


[解决办法]
long fac(int n)
{
long f;
if(n <0)
{
cout < < "n <0,data error! " < <endl;
f=-1;
}
else if(n==0||n==1) f=1;
else f=fac(n-1)*n;
return f;
}
当你删除f=-1的时候程序直接到return f;这一步,程序返回的是一个不确定数值;

[解决办法]
这能使函数返回负数,返回负数在这里表明没有成功.若不指定一个值,就会返回任意值.

读书人网 >C语言

热点推荐