注册 登录
编程论坛 C++教室

关于函数调用

blueness21 发布于 2007-09-13 08:37, 626 次点击
先说一个求阶乘的题目.
-------------------------------------------------------------------------
//原函数.
#include<iostream>
using namespace std;
long fac(int n)
{
long f;
if(n<0)
cout<<"n<0,data error!"<<endl;
else if(n==0) f=1;
else f=fac(n-1)*n;
return(f);
};
int main()
{
long fac(int n);//注意这个地方.
int n;
long y;
cout<<"Enter a positive integer:"<<endl;
cin>>n;
y=fac(n);
cout<<n<<"!="<<y<<endl;
}
-----------------------------------------------------
我觉得 <<<long fac(int n);//注意这个地方.>>>这行是没必要的.
于是删掉,可以正常运行.
但是如果这样再把自定义的fac函数剪到主函数后面的就会出现错误,必须在主函数把long fac(int n);
这句加上以示声明.就是下面的样子
#include<iostream>
using namespace std;
int main()
{
long fac(int n);//注意这个地方,必需要这句了.
int n;
long y;
cout<<"Enter a positive integer:"<<endl;
cin>>n;
y=fac(n);
cout<<n<<"!="<<y<<endl;
}
long fac(int n)
{
long f;
if(n<0)
cout<<"n<0,data error!"<<endl;
else if(n==0) f=1;
else f=fac(n-1)*n;
return(f);
};
------------------------------------------------
请问各位,是不是应该这样考虑的啊?
8 回复
#2
exqus2007-09-13 08:53

是的

#3
远去的列车2007-09-13 09:33
#include<iostream>
using namespace std;

long fac(int n); // 放主函数外边

int main()
{
int n;
long y;
cout<<"Enter a positive integer:"<<endl;
cin>>n;
y=fac(n);
cout<<n<<"!="<<y<<endl;
}

long fac(int n)
{
long f;
if(n<0)
cout<<"n<0,data error!"<<endl;
else if(n==0) f=1;
else f=fac(n-1)*n;
return(f);
}; //此处多一分号

[此贴子已经被作者于2007-9-13 9:34:16编辑过]

#4
blueness212007-09-13 16:41
以下是引用远去的列车在2007-9-13 9:33:17的发言:
#include<iostream>
using namespace std;

long fac(int n); // 放主函数外边

int main()
{
int n;
long y;
cout<<"Enter a positive integer:"<<endl;
cin>>n;
y=fac(n);
cout<<n<<"!="<<y<<endl;
}

long fac(int n)
{
long f;
if(n<0)
cout<<"n<0,data error!"<<endl;
else if(n==0) f=1;
else f=fac(n-1)*n;
return(f);
}; //此处多一分号

现在又有问题了,我怎么发现那个分号加不加都可以正常运行啊??
我之前也更觉得应该不加似的.

#5
snakeImao2007-09-13 16:42
在代码中,函数声明先于函数调用出现.
函数声明一般放在程序的main部分之前.
#6
hgxwd3102007-09-13 23:12

up

#7
jbwang2007-09-13 23:55

“多一个分号”的问题:因为函数的定义到“}”就结束了,不用加分号。你加了分号只表示一个空白行。

#8
sunkaidong2007-09-14 10:33
是啊.只要先定义了声明就是没有需要的,但是如果没有先定义就要声明一下,要不编译器不认识
#9
blueness212007-09-16 12:43
以下是引用jbwang在2007-9-13 23:55:42的发言:

“多一个分号”的问题:因为函数的定义到“}”就结束了,不用加分号。你加了分号只表示一个空白行。

懂啦,谢谢~~

1