函數遞歸之a!+b!+c!

                         問題 D: C語言習題 a!+b!+c!

題目描述

a!+b!+c!的值,用一個函數fac(n)n!a,b,c的值由主函數輸入,最終得到的值在主函數中輸出。

輸入

a,b,c的值

輸出

a!+b!+c!的值

#include <iostream> 

using namespace std; 

int main() 

int fac(int);

  int a,b,c,sum; 

  cin>>a>>b>>c; 

  sum=fac(a)+fac(b)+fac(c); 

  cout<<sum<<endl; 

  return 0; 

}

int fac(int n) 

  int s=1; 

  for(int i=1;i<=n;i++) 

      s=s*i; 

  return s; 

}

階乘就是累乘,三個階乘相加,我們可以自定義求階乘的函數,加法在主函數中體現;

先定義一個整型函數(int fac(int n)),因爲求的是乘法,所以變量定義爲1(int s=1;),從一開始直到所需數據(for(int i=1;i<=n;i++)),依次相乘(s=s*i;)

因爲主函數在前,所以調用自定義函數(int fac(int);)

注:自定義函數還可以用遞歸的方法,例如

#include <iostream>

using namespace std;

int main()

{

    int fac(int);

    int a,b,c,sum;

    cin>>a>>b>>c;

    sum=fac(a)+fac(b)+fac(c);

    cout<<sum<<endl;

    return 0;

}

int fac(int n)

{

    if(n==1) return 1;

    else return n*fac(n-1);

}

#include <iostream>

using namespace std;

int main()

{

    int fac(int);

    int a,b,c,sum;

    cin>>a>>b>>c;

    sum=fac(a)+fac(b)+fac(c);

    cout<<sum<<endl;

    return 0;

}

int fac(int n)

{

    int s;

    if(n==1) s=1;

    else s=n*fac(n-1);

    return s;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章