用C++实现递归算法出错(请高手给看看,先谢谢了)

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:27:41
#include<iostream>
sing namespace std;
class DIGUI //建立一个DIGUI类
{
int temp;
int n;
public:
DIGUI(int s);
~DIGUI();
int fun(int n);
};

01 void DIGUI::DIGUI(int s) //调用函数fun()
{
n=s;
02 fun();
}

int DIGUI::fun(int n) //求n的递归
{
if(n<=1)
temp=1;
else
temp=n*fun(n-1);
return temp;
cout<<"n="<<temp<<'\n'; //输出n!
}

void main()
{

int num;
cout<<"N=n*(n-1)*(n-2)*....*2*1";
cin>>"请输num的值";
cin>>num;
03 DIGUI a(num);

}
编译出现错误
标号01处 constructors not allowd a return type
标号02处 "fun"function does not take 0 parameters
可是我看得书上都是这样不带参数就这么写的啊
标号03处 function not called
麻烦各位高手给看看,急等答案
还问个问

1.构造函数没有返回类型,void去掉
2.fun有参数
3.前面的错误导致这个函数不被调用
正确的:
#include<iostream>
using namespace std;
class DIGUI //建立一个DIGUI类
{
int temp ;
int n;
public:
DIGUI(int s);
//~DIGUI();
int fun(int n);
void dis()
{
cout<<"n!="<<temp<<'\n'; //输出n!
}

};

DIGUI::DIGUI(int s) //调用函数fun()
{
n=s;
temp=1;
fun(n);
}

int DIGUI::fun(int n) //求n的递归
{
if(n==1)
temp=1;
else
temp=n*fun(n-1);
return temp;

}

void main()
{

int num;
cout<<"N=n*(n-1)*(n-2)*....*2*1\n";
cin>>num;
DIGUI a(num);
a.dis();
}

1> 处: 构造函数不能有返回类型, 即使void也不行
应改为:
DIGUI::DIGUI(int s) //调用函数fun()
{
n=s;
//02 fun(); 此句须注释掉, 构造函数不能有返回值
}