欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端提高篇(十八)JS进阶13递归函数与汉诺塔练习

程序员文章站 2024-01-04 20:36:40
...

递归定义:函数自己调用自己,需注意,要有终止条件
递归思维:把复杂问题拆阶成越来越简单的问题,直到可以获得结果
使用到数据结构中的栈概念:先进后出

用递归实现n的阶乘:

    <script>
        function f(n){
            console.log(n);
            if (n == 1){
                return 1;
            }
            return n * f(n-1);
        }
    </script>

前端提高篇(十八)JS进阶13递归函数与汉诺塔练习
用递归实现x的n次方:

        function f2(x, n){
            if (n == 0){
                return 1;
            }
            return x * f2(x,n-1);
        }

前端提高篇(十八)JS进阶13递归函数与汉诺塔练习
作业:汉诺塔
hanoi(数量, 启动柱子, 目标柱子, 辅助柱子)
启动柱子设为’A’,最终放在’B’柱子,即目标柱子为’B’
最后一步没想好,因为只要把最后一个盘子放到目标柱子就好了,不需要辅助,不知道有没有哪里理解错了,先写一个版本,后面来补

        //汉诺塔
        function hanoi(num, start, end, mid){
            console.log('start:' + start + ' end:' + end + ' mid:' + mid);
            if (num == 1){
                return end;
            }
            return hanoi(num-1,mid,end,start);
        }
        hanoi(5, 'A', 'B', 'C');

运行结果:
前端提高篇(十八)JS进阶13递归函数与汉诺塔练习

上一篇:

下一篇: