一个关于递归的c++数学题

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:26:55
#include <iostream.h>
//必须使用递归
int fun1(int n)
{
int res;
if(n<0)
{return 0;}
else
{if(n=0)
{res=1;return res;}
else
{res=n*fun1(n-1);return res;}
}
};
//不能使用递归
int fun2(int n)
{
int res;
if(n=0)
{
res=1;
return res;
}
else
{
for(int i=1;i<=n;i++)
res *= i;
return res;
}
}
void main()
{
int i;
cout<<"请输入一个整数: "<<endl;
cin>>i;
cout<<"输入数字的阶乘是:"<< fun1(i)<<endl;
cout<<"输入数字的阶乘是:"<< fun2(i)<<endl;
return;
}

我修改了N遍 ,就是看不出错,编译没有错误,就是运行结果不对,
显示输入数字的阶乘是:0
输入数字的阶乘是:1

这到底是怎么回事?

#include <iostream.h>
//必须使用递归
int fun1(int n)
{
int res;
if(n<0)
{return 0;}
else
{if(n==0)
{res=1;return res;}
else
{res=n*fun1(n-1);return res;}
}
};
//不能使用递归
int fun2(int n)
{
int res=1;
if(n==0)
{
res=1;
return res;
}
else
{
for(int i=1;i<=n;i++)
res *= i;
return res;
}
}
void main()
{
int i;
cout<<"请输入一个整数: "<<endl;
cin>>i;
cout<<"输入数字的阶乘是:"<< fun1(i)<<endl;
cout<<"输入数字的阶乘是:"<< fun2(i)<<endl;
return;
}

注意“=”是赋值“==”才是判断。。另外在fun2中res要赋初值