算法

来源:互联网 发布:影视cms系统哪个好 编辑:程序博客网 时间:2024/06/10 22:14

算法

1.累加/累积

初始化:初值一般为0或者1.累加为0,累积为1.

循环控制条件:一种是固定次数;次数不固定,当满足条件是结束循环

确定累加/积项的变化:

    var num = Number(prompt("请输入一个自然数"));    var sum = 0;    for(var i = 1;i <= num;i ++){        sum += i;    }    document.write(sum);

2.迭代

也叫辗转法。

规律:可以不断地用旧的值去得到新的值,一直到我们想要得到的结果。

1)找到迭代的值(旧值)

2)确定迭代的关系

3)知道想要的结果是什么

案例:

    var num1 = Number(prompt("输入整数num1"));    var num2 = Number(prompt("输入整数num2"));    var result;    if(num1%num2 == 0){        result = num2;    }    else{        result = getGCD(num1,num2);    }    document.write(result);    function getGCD(num1,num2){        var t;        while(num1%num2){            t = num1%num2;            num1 = num2;            num2 = t;        }        return t;    }


3.递推

通过数学规律,通过公式计算到下一项的值,直到我们想要的结果为止。

例如:兔子产子


var month = Number(prompt("请输入月份"));var a = 1;var b = 1;var sum ;if(month < 2){    sum = 1;}else{    sum = getSum(a,b,month);}document.write(sum);//function getSum(a,b,month){    for(var i = 1;i < month;i ++){        sum = a + b;        a = b;        b = sum;    }    return sum;}


4.穷举

找不到数学规律,使用最笨的办法,穷举,利用计算机速度快的特点,将所有可能性全部列出来,并将我们想要的结果记录下来。

例子:百钱白鸡

for(var cock = 0;cock <=20;cock++){    for(var hen = 0;hen < 33;hen++){        var chicken = 100-cock-hen;        if(((100-5*cock-3*hen)*3 == chicken)){            document.write("鸡公" + cock + ",");            document.write("鸡母" + hen+ ",");            document.write("小鸡" + chicken);            document.write("<br>");        }    }}

5.递归

递归按照思路是复杂的,函数一层层调用,一层一层嵌套,然后又一层一层返回。

递归实际上就是寻找nn-1的关系,也就是降幂。

案例:猴子称大

var n = Number(prompt("请输入自然数n"));var a = fun(n);document.write(a);function fun(n){    if(n == 1){        return 1;    }    return (fun(n-1)+2)%n + 1;} 

总结

算法都是需要找到规律的,累加/累积、迭代、递推、递归、穷举都是有规律才能计算的。
累加/累积是需要找到项与项之间的关系,找打循环关系。
迭代是找到新的值替代旧的值,当满足我们的条件时输出我们的结果。
递推是通过前面几项得到下一项,然后当满足我们的条件时就输出结果。
递归是函数本身调用本身,这个很麻烦。但是大部分函数都可以使用递归来解决。这个递归就是要找到规律,找到相邻两项之间的关系。
穷举这个算法很奇特,这个算法是当我们找不到规律时,但是我们又能完全列举出来的时候使用。这个算法是使用了计算机运行速度快的特点,虽然循环次数较多,但是计算机快啊,所以次数都不成问题。

原创粉丝点击