斐波那契系列問題的遞迴和動態規劃3

2021-08-15 09:24:37 字數 1299 閱讀 6085

【題目】

假設農場中成熟的母牛每年只會生1頭小母牛,並且永遠不會死。第一年農場有1只成熟的母牛,從第二年開始,母牛開始生小母牛。每只小母牛3年之後成熟又可以生小母牛。給定整數n,求出n年後牛的數量。

【舉例】

n=6,第1年1頭成熟母牛記為a;

第2年a生了新的小母牛,記為b,總牛數為2;

第3年a生了新的小母牛,記為c,總數為3;

第4年a生了新牛d,總數4;

第5年b成熟了,ab分別生了乙隻,總數為6;

第6年c也成熟了,abc分別生了乙隻,總數為9,故返回9.

【**】

public

static

void

main(string args)

//n年後牛的數量:1,2,3,4,6,9

//方法1:暴力遞迴,o(2^n)

public

static

intc1(int n)

if(n==1||n==2||n==3)

//所有的牛都不會死,故第n-1年的牛會活到第n年

//成熟牛的數量:三年成熟,故n-3年的所有牛到n年肯定都成熟了

//故 類似斐波那契數列,但 c(n)=c(n-1)+c(n-3)

return c1(n-1)+c1(n-3);

}//方法2:依次從左到右求出每一項的值,o(n)

public

static

intc2(int n)

if(n==2||n==1||n==3)

int prepre=1;//初始第1項

int pre=2;//初始第2項

int res=3;//初始第3項

int t1=0;

int t2=0;

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

return res;

}//方法3:矩陣乘法思想,o(logn)

//(c(n),c(n-1),c(n-2))=(3,2,1)×,,}^(n-3)

public

static

intc3(int n)

if(n==2||n==1||n==3)

int base=,,};

int res=matrixpower(base,n-3);//狀態矩陣的n-3次方

return

3*res[0][0]+2*res[1][0]+res[2][0];

}

斐波那契系列問題的遞迴和動態規劃2

題目 給定整數n,代表台階數,一次可以跨2個或者1個台階,返回有多少種走法。舉例 n 3,可以三次都跨1個台階 也可以先跨2個台階,再跨1個 或者先跨1個,再跨2個。所以有三種走法,返回3.public static void main string args 給定台階數,返回走法數 方法1 暴力遞...

遞迴 斐波那契

題 若一頭小母牛,從出生起第四個年頭開始每年生一頭母牛,按此規律,第n年有多少頭母牛?具體分析 1 分析題目 從出生起第四個年頭開始每年生一頭母牛 時間 年 未成熟母牛 頭 成熟母牛 頭 母牛總數 頭 1 1 0 1 2 1 0 1 3 1 0 1 4 0 1 1 5 1 1 2 6 2 1 3 7...

斐波那契遞迴

const fib1 n if n 0 else if n 1 else console.log fib1 5 函式呼叫順序 fib1 5 fib1 4 fib1 3 fib1 2 fib1 1 fib1 0 fib1 1 fib1 2 fib1 1 fib1 0 fib1 3 fib1 2 fib...