1樓:匿名使用者
用遞迴法計算n!
用遞迴法計算n!可用下述公式表示:
n!=1 (n=0,1)
n×(n-1)! (n>1)
按公式可程式設計如下:
long ff(int n)
main()
程式中給出的函式ff是一個遞迴函式。主函式呼叫ff 後即進入函式ff執行,如果n<0,n==0或n=1時都將結束函式的執行,否則就遞迴呼叫ff函式自身。由於每次遞迴呼叫的實參為n-1,即把n-1的值賦予形參n,最後當n-1的值為1時再作遞迴呼叫,形參n的值也為1,將使遞迴終止。
然後可逐層退回。
下面我們再舉例說明該過程。設執行本程式時輸入為5,即求5!。在主函式中的呼叫語句即為y=ff(5),進入ff函式後,由於n=5,不等於0或1,故應執行f=ff(n-1)*n,即f=ff(5-1)*5。
該語句對ff作遞迴呼叫即ff(4)。
進行四次遞迴呼叫後,ff函式形參取得的值變為1,故不再繼續遞迴呼叫而開始逐層返回主調函式。ff(1)的函式返回值為1,ff(2)的返回值為1*2=2,ff(3)的返回值為2*3=6,ff(4)的返回值為6*4=24,最後返回值ff(5)為24*5=120。
2樓:匿名使用者
#include "stdio.h"
long fac(unsigned int n)return n*fac(n-1);
}void main()
4、設計一個函式,當給定一個整數後,能得到該數的補碼(應考慮該整數是正數或負數)。
3樓:
#include"stdio.h"
void fun(int n)
void main()
4樓:匿名使用者
提供演算法思復路吧,就不給你寫制函式了:
正數bai
的補du碼=原碼
負數的補碼=其絕對zhi值的原碼取反dao+1所以判斷正負,並標記正負,然後取其絕對值,計算原碼(逐步%2),存到bool型陣列裡
如果符號標記為正,即為補碼;
如果符號標記為負,將bool陣列逐位取反,然後再加1.
在主程式中提示輸入整數n,編寫函式,用遞迴的方法求1+2+....+10 c++
5樓:
#include//包含必要的標頭檔案
using namespace std; //名字空間
int sum(int n) //定義遞迴函式
int main()
這個可以執行的,我用gev試了一下,可以執行,希望能幫到你
6樓:匿名使用者
#include
using namespace std;
int factorial(int n)
int main()
7樓:匿名使用者
#include
using namespace std;
int sumfun(int a)
else return sumfun(a-1)+a;
}int main()
編寫遞迴函式求1 2 3n的值,並顯示結果
告嶽蘇冷鬆 上面的都不是遞迴函式!應該 現定義遞迴函式 private function sum n asdoubleifn 0then sum n sum n 1 else sum 0end ifend function 然後呼叫,比如加到100,就這樣 n 100msgbox sum n 會彈出...
用c編寫求n的階乘的函式,用C 編寫一個求n的階乘的函式
class program public int factorial int num int result if num 1 return 1 else result factorial num 1 num return result class test static void main stri...
求用cc語言編寫輸入n輸出1 n的所有排列(千萬不
include include using namespace std int main int n cout input n endl 輸入n cin n 這裡可以自己做輸入錯誤檢測 給陣列動態分配大小 int a new int n 給陣列賦值 要排列的資料來源 for int i 1 i n ...