【算法题】吃糖问题

题干:一个人一次可以吃1颗糖,也可以吃2颗糖,也可以同时吃下n颗糖。求这个人吃完n颗糖有多少种方式。

 function findWayEatSugarNumber(n) {
        const wayArr = findWayEatSugar(n);
        const returnArr = wayArr.map((ele) => ele.sort()).map((ele) => ele.join());
        return Array.from(new Set(returnArr));
    }
    function findWayEatSugar(n) {
        const result = [[n]];
        for (let i = 1; i <= n; i++) {
            const j = n - i;
            if (j === 0) continue;
            const jArr = findWayEatSugar(j);
            const prevArr = jArr.map((ele) => [i, ...ele]);
            result.push(...prevArr);
        }
        return result;
    }
    const testArr = [1, 2, 3, 4, 5, 6, 7, 8];
    testArr.forEach((ele) => {
        const result = findWayEatSugarNumber(ele);
        console.log(`吃${ele}颗糖,共有${result.length}种方式,分别为:`, result);
    })

  

 

posted @ 2023-11-10 10:42  LeoX的爬坑笔记  阅读(14)  评论(0编辑  收藏  举报