編寫並除錯求n (n為整數)的遞迴函式,希望能在程式執行過程中動態地顯示遞迴函式被呼叫的軌跡

時間 2021-05-04 21:50:01

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 ...