首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问一个递归有关问题

2012-02-04 
请教一个递归问题用递归方法求n!#includeiostreamusingnamespacestdlongfac(int)intmain(){intnlongy

请教一个递归问题
用递归方法求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;这一步,程序返回的是一个不确定数值;

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

热点排行