1

Тема: Порахувати суму факторіалів

Доброго вечора! Допоможіть будь ласка порахувати суму факторіалів, які потрібно рахувати рекурсивно.
У мене є функція, яка рахує (n+1)!, потрібно, щоб кожен доданок сумувався, тобто 1!+2!+3!+4!+....+n!+(n+1)!

Прихований текст
int Suma(int);
int Suma(int x)
{
    int s=0;
    if(x<0)
        exit(0);
    else
        if (x==0)
            return 1;
    else
            if (x==1)
                return 2;
            else
                return (x+1)*Suma(x-1);
}

2

Re: Порахувати суму факторіалів

#include <iostream>
using namespace std;

size_t factorial(size_t n){
    size_t ret = n;
    if( n == 0 )
        ret = 1;
    else
        ret = ret*factorial(--n); 
    return ret;
}

int main(){
    size_t f = 0;
    size_t i = 0;
    size_t s = 0;
    size_t n = 5;
    for( i = 0; i <= n + 1; i++ ){
        f = factorial(i);
        s = s + f;
        cout<<i<<"! = "<<f<<"\ts= "<<s<<endl;
    }
    return 0;
}

http://codepad.org/QwkjmBbw

0! = 1    s= 1
1! = 1    s= 2
2! = 2    s= 4
3! = 6    s= 10
4! = 24    s= 34
5! = 120    s= 154
6! = 720    s= 874

Подякували: snikers.mc1

3

Re: Порахувати суму факторіалів

Рекурсивно... хех...

typedef unsigned long long num;

constexpr num factorial( unsigned n ) 
{
    if( n <= 1 ){
        return 1;
    } else {
        return n * factorial( n - 1 );
    }
}

constexpr num sumFactorial( unsigned  n ) 
{
    if( n == 0 ) {
        return factorial( 0 );
    } else {
        return sumFactorial( n - 1 ) + factorial( n );
    }
}

4

Re: Порахувати суму факторіалів

Ось рекурсія для факторіалу числа)

int factorial(int n) {
  return n?n*factorial(n-1):1;
}
Подякували: leofun01, snikers.mc2