帮忙看看这个就阶乘的程序C++

来源:百度知道 编辑:UC知道 时间:2024/07/03 12:35:02
#include <iostream.h>

void main()
{

int Fix(int n)
{
if(n<=1) return 1;
else return n*Fix(n-1);

}
int a;
cin>>a;
cout<<"所求阶乘值为:"<<Fix(a)<<endl;
}

编译时说error C2601: 'Fix' : local function definitions are illegal。
为什么要放在外面呢?
我小菜~
谢了

c/c++中函数之间是平行的,不存在从属关系,也就是说各个函数之间是独立的.一个函数内部是表示一段动作的代码,当在其内部定义一个函数,将导致意义的错误

好像Pascal可以(没用过)

fix函数应该定义在main函数外,并且声明原型。

int Fix(int n)
{
if(n<=1) return 1;
else return n*Fix(n-1);

}

void main()
{

int a;
cin>>a;
cout<<"所求阶乘值为:"<<Fix(a)<<endl;
}

你的错误在于不知道子函数放在什么地方,子函数有两种方法,均必须在主函数main外部:
1.子函数在主函数前面
程序如下:
#include <iostream.h>

int Fix(int n)
{
if(n<=1)
return 1;
else
return n*Fix(n-1);
}

void main()
{
int a;
cin>>a;
cout<<"所求阶乘值为:"<<Fix(a)<<endl;
}
2.子函数在主函数main后面,但是必须在主函数前面申明子函数,程序如下:
#include <iostream.h>

int Fix(int n);
void main()
{
int a;
cin>>a;
cout<<"所求阶乘值为:"<<Fix(a)<<endl;
}