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

猜你喜欢

转载自blog.csdn.net/qq_42632299/article/details/81224391