C語言實現遞迴演算法

2021-04-09 05:20:31 字數 1861 閱讀 8754

c語言實現遞迴演算法

遞迴演算法是運用於函式呼叫中的。

遞迴的概念:在乙個函式體內呼叫自身稱為函式的遞迴呼叫。

遞迴呼叫的原理:需要在函式內滿足一定的條件後不在呼叫自身或者結束,或者呼叫其它函式,

否則容易出現類似死迴圈的情況,程式將癱瘓。 已知

f(1) = 1

,f(0) = 0,fn(n) = f(n-1) + f(n-2),

求f(5)

為多少?

第一步,把

5帶入遞迴公式中得到

f(5) = f(4) + f(3),

此時f(4)

以及f(3)

仍然屬於未知,必須繼

續求f(4)

和f(3)

。 第二步,把

4帶入遞迴公式中得到

f(4) = f(3) + f(2)

。 第三步,把

3帶入遞迴公式中等到

f(3) = f(2) + f(1)

。 第四步,把

2帶入遞迴公式中得到

f(2) = f(1) + f(0)

。 第五步,此時

f(0)

和f(1)

都是已知的,然後下一步將它們一級一級代入到以上的公式中,逐

一求出f(2)

,f(3)

,(4)

,最後求出結果

f(5)。

求階乘n!

= n*(n-1)*(n-2)*...*2*1。

首先定義最終終止條件

f(1) = 1。

然後定義遞迴公式

f(n) = f (n)*f(n-1) 。

#include

int fn(int a);

void main()

int fn(int a)

else

}

斐波那契數列是第一和第二個數都為

1,後面的數都是前兩個數相加的和得到的。如(1

,1

,2,3,5,…)

求斐波那契數列的前

10個數。

首先定義最終終止條件

f(1)=1,f(2)=1;

然後定義遞迴公式中

f(n)=f(n-1)+f(n-2)。

#include

int fn(int a);

void main()

int fn(int a)

else if(a>2)}

有乙個農場在第一年的時候買了一頭剛出生牛,這頭牛在第四年的時候就能生一頭小牛,以後每

年這頭牛就會生一頭小牛。這些小牛成長到第四牛又會生小牛,以後每年同樣會生一頭牛,假設

牛不死,如此反覆。請問

50年後,這個農場會有多少頭牛?

首先定義最終終止條件

f(4)=1;

然後定義遞迴公式中

f(n)=f(n-1)+f(n-3)。

#include

int fn(int a);

void main()

int fn(int a)

else if(a>=4)

}

有個蓮花池裡起初有乙隻蓮花,每過一天蓮花的數量就會翻一倍。假設蓮花永遠不凋謝,

30天的

時候蓮花池全部長滿了蓮花,請問第

23天的蓮花佔蓮花池的幾分之幾?

首先定義最終終止條件

f(1)=1;

然後定義遞迴公式中

f(n)=f(n-1)*2。

#include

int fn(int a);

void main()

int fn(int a)

else

}

c語言實現磁碟排程演算法 C語言實現洗牌演算法

首先看一道題目 有乙個大小為100的陣列,裡面的元素是從 1 到 100,隨機從陣列中選擇50個不重複數。用math.random 100,就可以拿到乙個 0 到 99 的隨機數,是不是重複50次就可以了?當然不是,假如,第一次隨機到5,第二次如果再一次隨機到5的話,要求是選擇不重複的數,所以要選出...

C語言實現Fibonacci數列遞迴

問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。include include int n 10007 計算fibonacci函式 int fibo程式設計客棧nacci int ...

lfu演算法實現c語言 lru演算法c語言實現

a 分配頁面 b 置換演算法 c 程式訪問 d 換出頁面 正確答案 d 單選題 22.設某程序的頁訪問串為 1 3 1 2 4,工作集為 3 塊,問 按 lru 頁面替換演算法,儲存管理採取虛擬儲存技術 組成 物理記憶體 主機板上的ram 和硬碟上的 虛擬記憶體聯合組成 頁面大小 4kb 例 頁面排...