1. 程式人生 > >JS中關於a+aa+aaa+aaaa的簡便計算方法

JS中關於a+aa+aaa+aaaa的簡便計算方法

題目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ㄒ)/~~