是否,我們可以舉辦 程式設計競賽?
我先丟一個題目:
使用 double,使用 遞迴,求費氏數列,
F(n)= F(n-2) + F(n-1)
F(0)= 1;
F(1)= 1;
不必講求效率,精確到結果的 每一個數字,
可以做到 第幾項,答案是多少,需要多少時間?
如果 不能在合理的時間之內完成,
需要如何更改,
可以做到 第幾項,答案是多少,需要多少時間?
時間的計算精確度是多少?如何證明?
>> 本文固定链接: http://www.vcgood.com/archives/2554
是否,我們可以舉辦 程式設計競賽?
我先丟一個題目:
使用 double,使用 遞迴,求費氏數列,
F(n)= F(n-2) + F(n-1)
F(0)= 1;
F(1)= 1;
不必講求效率,精確到結果的 每一個數字,
可以做到 第幾項,答案是多少,需要多少時間?
如果 不能在合理的時間之內完成,
需要如何更改,
可以做到 第幾項,答案是多少,需要多少時間?
時間的計算精確度是多少?如何證明?
>> 本文固定链接: http://www.vcgood.com/archives/2554
你必须先 登录才能发表评论。
算了好久,最终结果也没出来,double的范围太大了,10的308次方啊。
听着风扇呼呼转就心疼,干脆终止运算。
所以,這就是 你的不對啦!
假設,F(n) –> ans
// (ans + 1) must > ans
if ((ans + 1) <= ans ) then break;
// 就可以 停止用算啦
and, 遞迴呼叫是很花時間的,
如果 時間不合理,就要 想辦法更改演算法,
改成 非遞迴的模式。
我来试试