作者VictorTom (鬼翼&娃娃魚)
看板C_and_CPP
標題Re: [問題] 不知道是不是可以PO這個版的問題
時間Fri Sep 18 00:41:43 2009
※ 引述《Piner (追憶似水年華)》之銘言:
: fib(in tn)
這代表這是一個函數, 傳入值為tn, 然後預期會回傳一個數回去吧....
這虛擬碼格式不是很完整, 不過看起來就是這樣預設的啦....
: {
{}會隔出一個程式區段, 像數學一樣是有左右括對應的....
所以最外圍的{}會括出fib這個函數的程式內容....
: if (n= =0 || n= =1) return 1
== (連續兩個=) 在C語言是判斷==左邊與右邊是否相等用的....
|| 是OR的意思, 代表它的左邊條件成立, 或者右邊條件成立....
所以if()括起來的東西是整個判斷式的條件, 若成立, 回傳1....
: eles return (fib (n-1)+fib(n-2))
^^^^^^^^^^^^^^^^^^^^
若上面if條件不成立, 就回傳上面標起來的結果....
這種作法又稱為遞迴; 另外, eles應該是else....
: }
: 答案fib(10)=89
其實fib費伯那西數列就是像下面這樣子的一個數列....
1 1 2 3 5 8 13 21 34 55 89
沒有電腦直接跑要一步步推導程式挺累的....
只是這題有個難點是, 我寫了11個數出來....
答案才是fib(10), 推幾個才是要求的要想一下Orz
: 請問這是什麼語言 怎麼解答呢
: 如果不合版規 版主砍掉沒關係 也請大家見諒
前一篇回文還沒看到第二題, 所以洗澡睡覺前再回一篇騙P幣吧XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.174.98
→ VictorTom:補充, != 是判斷左右不相等, && 是左右條件要同時成立. 09/18 00:42
推 Piner:謝謝V大教學! 09/18 00:45
推 sunneo:我本來以為是in := input, 不過看到參數並沒有tn 因此... 09/18 09:29
→ sunneo:因此他應該是int n 所以確實是c語言 09/18 09:29
→ VictorTom:s大眼好利, 小弟我還真沒注意到in tn是int n才對XD 09/18 09:30
推 worldxxi:我總覺得有一種 高手看到殘缺程式碼 就會自動還原的fu 09/18 15:22