作者truesword ( )
看板Soft_Job
標題Re: [請益] 菜鳥面試round1
時間Thu Apr 21 23:39:41 2011
※ 引述《nilcc (展~)》之銘言:
: 筆試題目4題 第一題是 1.1.2.3.5.8.13.... 寫出程式可以算出第N個數為何
: 我main方法裡寫了
: int d=20;
: int a=1;
: int b=0;
: for(int i=0;i<d;i++) {
: int c=a+b;
: System.out.println( c )
: a=b;
: b=c;
: }
: 他問我有辦法 直接知道n的值嗎? 還是一定要跑迴圈
: 我說把System.out.println( c )寫在for外面嗎?
: 他說就這樣?
: 後來回家才發現有遞迴寫法@@
請問直接知道N的值是什麼意思? 是指算都不用算,查也不用查就知道N嗎?
N怎麼看都像是user-defined的數字
這是一個發散的數列.....我只知道 f(N+1)/f(N)是個定值,印象中是1.618
難道用遞迴寫就可以直接知道N?
小弟實在不太懂"直接知道N"這句話什麼意思@@"
另外分享一個迴圈寫法
int a=0, b=1;
for(int i=0; i<N; i++)
{
a+=b;
b+=a;
}
printf("%d",a); //或者printf("%d",b) 看怎麼定義第N項
-------------------------------------------
補充,剛在WIKI上看到f(N)的closed form,他應該是要問這個吧?
#define Q = 1.618.......
f(N) = (Q^N-(1-Q)^N)/sqrt(5);
所以不用迴圈也不用遞迴就能知道f(N)....果然還是數學家強大@@"
不過f(N)需再進一步近似成整數就是了
--
fight for dreams
fight for love
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.221.113
※ 編輯: truesword 來自: 140.115.221.113 (04/21 23:58)
→ wait999:這公式在離散裡面看過 04/22 00:21
推 tbof:Q正確的值是 (1+squrt(5))/5 04/22 00:37
推 bobju:那主管是想試探一下原po有沒有修過離散數學吧? 04/22 01:24
→ bobju:她不要你只會寫程式,妳要你懂得運用理論來解問題. 04/22 01:25
推 yauhh:你這個問題...仔細看Wikipedia吧,他們就是在討論這回事 04/22 19:55
推 CRPKT:這是正解吧, 改遞迴就掉進陷阱了 04/23 09:58
推 MephistoH:是在考數學嗎? 04/25 16:30
推 ECMA:這題會應該就錄取了吧XD 02/26 20:43