上車人數(遞迴 遞推)

2021-10-01 05:59:51 字數 967 閱讀 2770

公共汽車從始發站(稱為第1站)開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上、下車,但上、下車的人數相同,因此在第2站開出時(即在到達第3站之前)車上的人數保持為a人。從第3站起(包括第3站)上、下車的人數有一定的規律:上車的人數都是前兩站上車人數之和,而下車人數等於上一站上車人數,一直到終點站的前一站(第n-1站),都滿足此規律。現給出的條件是:共有n個車站,始發站上車的人數為a,最後一站下車的人數是m(全部下車)。試問從c站開出時車上的人數是多少?

輸入只有一行,四個整數a,n,m和x

輸出x站開出時車上的人數

樣例輸入

5 7 32 4

樣例輸出

13第一次做題錯誤理解上車含義,浪費了大量時間,重新審題後發現需要先根據a,n,m算出第二站上車人數,之後上車人數按斐波那契數列的規律爬公升。隨便搞個遞迴解決

注意初始化,

**思路很簡潔,就是先在主函式中用暴力加遞推求出第二站的真實人數,跳出後將資料傳遞至onbus函式遞迴完成此後的內容

本題需要注意題目中容易混淆的概念,如果能正確理解題目,那麼此題應該就可以水到渠成

其實遞迴部分也可以用遞迴完成(搞個陣列搞個迴圈加完就可以)有效防止超時問題,我的**沒有這部優化,懶得繼續寫了,在此提供一種思路。

下為ac**

#include

intonbus

(int n,

int l[

100]

,int c)

intmain()

for(

int i=

3;i(e==c)

break;}

printf

("%d\n"

,l[2])

; y=

onbus

(d,l,a)

;printf

("%d"

,y);

return0;

}

用遞迴演算法解決上車人數問題

題目 1.公共汽車第1站開出,在始發站上車的人數為a,到達第2站,在第2站有人上 下車,但上 下車的人數相同,第3站起 包括第3站 上 下 車的人數有一定的規律 上車的人數都是前兩站上車人數之和 下車人數等於上一站上車人數 一直到終點站的前一站 第n 1站 都滿足此規律。現給出的條件是 共有n個車站...

SCU 1118 上車人數

問題描述 公共汽車從始發站 稱為第1站 開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上 下車,但上 下車的人數相同,因此在第2站開出時 即在到達第3站之前 車上的人數保持為a人。從第3站起 包括第3站 上 下車的人數有一定的規律 上車的人數都是前兩站上車人數之和,而下車人數等於上一站上...

遞迴和遞推

遞迴的概念 乙個函式 過程 概念或資料結構,如果在其定義或說明內部直接或間接地出現有其本身的引用,或者是為了描述問題的某一狀態,必須用到它的上一狀態,而描述上一狀態,又必須用到它的上一狀態 這種用自己來定義的方法,稱之為遞迴或者遞迴定義。在程式設計中,過程或函式直接或者間接呼叫自己,就稱為遞迴呼叫 ...