写一个计算n!的子程序。使用此子程序时,会生成一个计算(a + b)的程序!

时间:2016-01-07 14:40:10

标签: c++ if-statement count return factorial

我的任务是

  

编写一个计算n!的子程序。使用此子程序时,会生成一个计算(a+b)!的程序。

我写了以下代码:

using  namespace  std;
int f(int n) {
    for(int i=1;i<=n;i++){
        f=f*i;
    }
    return f;
}
int main() {
    int a,b;
    cout<<"a=";
    cin>>a;
    cout<<"b=";
    cin>>b;
    cout<<"factorial of a+b="<<(a+b)*f;
    return 0;
}

编译时出现此错误:

 In function 'int f(int)':
7:27: error: invalid operands of types 'int(int)' and 'int' to binary 'operator*'
8:8: error: invalid conversion from 'int (*)(int)' to 'int' [-fpermissive]
 In function 'int main()':
16:34: error: invalid operands of types 'int' and 'int(int)' to binary 'operator*'
17:9: error: expected '}' at end of input

1 个答案:

答案 0 :(得分:1)

这是你的错误

return f;

返回函数f()的函数指针。您还在使用函数指针进行计算。

在C ++中,您需要声明一个可用于计算和返回的变量:

int f(int n) {
    int result = 1;
    for(int i=1;i<=n;i++) { 
        result=result*i;
    }
    return result;
}