程序员面试金典---12

递归乘法

直接上代码:

/**
 * @param {number} A
 * @param {number} B
 * @return {number}
 */
var multiply = function(A, B) {
    if(A === 0 || B === 0)return 0
    arr = [0]
    for(let i = 1; i <= B; i++){
        arr[i] = arr[i - 1] + A
    }
    return arr[B]
};

汉诺塔

代码:

/**
 * @param {number[]} A
 * @param {number[]} B
 * @param {number[]} C
 * @return {void} Do not return anything, modify C in-place instead.
 */
var hanota = function(A, B, C) {
    const n = A.length

    const move = (n, A, B, C) => {
        if(n === 1){
            C.push(A.pop())
            return
        }

        // 将A中的n-1个移动到B
        move(n - 1, A, C, B)
        // 将A剩余的一个移动到C
        C.push(A.pop())
        // 将B中的n-1个移动到C
        move(n - 1, B, A, C)
    }
    move(n, A, B, C)
};
posted @   楸枰~  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示