在學(xué)習(xí)javascript,一本書上后面有個(gè)習(xí)題:
編寫一個(gè)計(jì)算Fibonacci數(shù)的程序,要求讓用戶輸入n值,并顯示計(jì)算結(jié)果。
Fibonacci的定義為:Fn=Fn-1+Fn-2,F1=1,F2=1,n=3,4....前幾個(gè)Fibonacci數(shù)為:1,1,2,3,5,8,13........
首先是我自己寫的
<html>
<head><script language="javascript">
var a=1;
var b=1;
var i=2;
var current;
function dell(n){
current=a+b;
b=a;
a=current;
i++;
if(i==n){
return current;
}
else{
return dell(n);
}
}
</script></head>
<body>
<script language="javascript">
var userinput=eval(prompt("請(qǐng)輸入N的置:",""));
var total=dell(userinput);
alert(total);
</script>
</body>
</html>
我里面dell函數(shù)的思路是用current來(lái)記錄當(dāng)前的Fibonacci的值,我初始了i=2,也就是沒(méi)有管n=1,2的時(shí)候,檢測(cè)i的值是否和n值相同,相同就返回當(dāng)前的
current
否則繼續(xù)遞歸dell函數(shù)
我看了參考答案,是這樣寫的
<html>
<head><title> 7-4參考答案 </title>
<script language=javascript>
<!--
function Fibonacci(n){ // 定義函數(shù)
if ((n==1) || (n==2)) {
return 1;
}
else {
return (Fibonacci(n-1)+Fibonacci(n-2));
}
}
//-->
</script>
</head>
<body>
<script language="JavaScript">
<!--
var userinput=eval(prompt("請(qǐng)輸入計(jì)算第幾個(gè)Fibonacci數(shù):", ""));
var total=Fibonacci(userinput); //調(diào)用遞歸函數(shù)
alert("第"+ userinput +"個(gè)Fibonacci為:"+total);
//-->
</script>
</body>
</html>
我發(fā)現(xiàn)在運(yùn)行參考答案的時(shí)候,n的數(shù)值太大的時(shí)候就有問(wèn)題了,瀏覽器非常卡,并且提示

這個(gè)是否說(shuō)明我的程序比較有效率,是什么原因造成的?知道的人指點(diǎn)下