利用面向对象的方法编写程序,计算“1!+2!3!+...+10!”,要求使用递归

利用面向对象的方法编写程序,计算“1!+2!3!+...+10!”,要求使用递归和非递归两种方法实现

第1个回答  2017-04-27
#include <iostream>
using namespace std;

class Factor {
public:
    // 非递归求阶乘
    long long fact(int n) {
        long long v = 1;
        while(n >=1)
        {
            v = v*n;
            n--;
        }
        return v;
    }   
    // 递归求阶乘
    long long factWithRecurs(int n) {
        if(n <=1) return 1;
        return n*factWithRecurs(n-1);
    }   
};

int main()
{
    Factor f;
    int n;
    cin >> n;
    long long sum = 0;
    for(int i = 1; i <= n;i++)
        sum += f.fact(i);   
    cout << sum <<endl;
    sum = 0;
    for(int i = 1; i <= n;i++)
        sum += f.factWithRecurs(i); 
    cout << sum <<endl;
}

本回答被网友采纳