JS中關於a+aa+aaa+aaaa的簡便計算方法
阿新 • • 發佈:2018-12-30
題目Sn=a+aa+aaa+aaaa....+n個a
這個題一個難點就是a的位數是變動的,第一項是一位,第二項是兩位,第三項是三位。
首先累加一定要是迴圈的,但是如何構造出每一項呢?
我大概有3種思路。
1、將每一項看做一個字串,那麼這就是一個字串連線,第一次連線0個,第二次連線1個,第三次連線2個
這也是網上流傳的方法,這種方法並不好,尤其是使用了eval這個函式。
var a=parseInt(window.prompt("請輸入數值a")); var n=parseInt(window.prompt("請輸入數值n")); var sum=""; for(var i=1;i<=n;i++){ var sum1=0; for(var j=0;j<i;j++){ sum1 = (sum1*10+a); } sum+=sum1+'+'; } sum=sum.substring(0,sum.length-1);// 構建不等式:7+77+777+7777+77777+777777 //sum=sum+"0"; console.log(sum+'='+eval(sum));
思路2:利用一個迴圈,同時計算每一項並累加。他們的規律是aa=a*10+a,aaa=aa*10+a,後一項=前一項*10+初始值
程式碼如下:
var a=Number(window.prompt("請輸入a")); var n=Number(window.prompt("請輸入n")); var sum=0,a1=0; for(var i=1;i<=n;i++){ a1=a1*10+a; sum+=a1; } document.write(sum);
思路3和思路2類似。現在它的規律是後一項跟前一項相關,與n是無關的,那麼我們能不能用遞推嗎?
此坑待填,因為我不會寫/(ㄒoㄒ)/~~ /(ㄒoㄒ)/~~