問題
假設:乙個反應器中有兩類粒子α和β,設每秒鐘乙個
α粒子**成3個
β粒子,而每秒鐘乙個
β粒子**成乙個
α粒子和兩個
β粒子。假如在t=0時:反應器中有乙個α粒子,求t秒時反應器中α粒子和β粒子的數目。
根據關係列出遞迴關係
a(t) = b(t-1參考程式)b(t) = 3*a(t-1) + 2*b
(t-1)
#include #include結果:243#define a_size 5
int aa(int size) //
aa(t)表示t時刻α的個數
int bb(int size) //
bb(t)表示t時刻β的個數
intmain()
a(t) = b(t-1得到遞迴關係:b(t) = 2*b(t-1) + 3*b(t-2),這是乙個常係數齊次線性方程。為了求解看下解常係數齊次線性方程的一般方法。)b(t) = 3*a(t-1) + 2b(t-1)得:
a(t-1)=b(t-2
)b(t) = 3*a(t-1) +2*b(t-1
) =3* b(t-2) + 2* b(t-1) (t>=2)
根據已知條件知:a(0)=1 a(1)=0 b(0)=0 b(1)=3
解常係數齊次線性方程的一般方法
首先區分
特徵方程與特徵值
求解通解的步驟
1.根據遞迴關係得出特徵方程,求解方程得到特徵根;
2.表示出通解的一般形式(分為是否有重根);
3.代入初始值得到係數,從而得到通解。
就本題演示一般步驟
1.把遞迴關係b(n)=2*b(t-1) + 3*b(t-2),表示為特徵方程:x2=2x+3,得到特徵值-1和3;
2.沒有重根,通解表示為b(t) = c1*(-1)n + c2*(3)n;
3.帶入初始值,得到c1=-3/4 c2 = 3/4,
從而得到通解:b(t) = -3/4 *(-1)n + 1/4 *(3)n+1
a(t) = -3/4 *(-1)n-1 + 1/4 *(3)n
(t>=2)
遞迴求解n!
一般來說,遞迴需要有邊界條件,遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進 當邊界條件滿足時,遞迴返回。遞迴的特點 遞迴就是在過程或函式裡呼叫自身。在使用遞迴策略的時候,必須有乙個明確地遞迴結束的條件,稱為遞迴出口 遞迴演算法階梯時通常顯得很簡潔,但是遞迴演算法解題的執行效率較低 在遞迴呼叫...
迷宮求解 遞迴
首先來看一下迷宮簡易圖 我們用 0 來表示該位置是牆,用 1 來表示該位置是路.所以,我們在處理迷宮問題的時候可以將其看成乙個二維陣列即可,而對應的每一條路我們可以用座標的形式將其表示,所以還需要有乙個結構體來描述對應的點的 1.相關資料結構 typedef struct maze maze typ...
遞迴式求解
1 t n 不是單調函式,e.g.t n sinx 2 f n 不是多項式函式 e.g.t n t n 2 2n 3 b不能表示為乙個常量 e.g.t n 2t n 1 t n t n 2 1 2 n2 n 解 此時 a 1,b 2,f n 1 2 n2 n 故 nlogba n0 1f n nlo...