我是靠谱客的博主 害羞黄蜂,这篇文章主要介绍JavaScript中for循环嵌套编程小案例,现在分享给大家,希望可以做个参考。

编写一个函数用于实现金额组合:面额分别有1元、2元、5元的纸币共计N张,现需要付出M元,统计共有几种付法。N、M是用户输入的值。(有10张纸币,面额分别是1元、2元、5元,现需要付出18元,通过编程统计出共有几种付法。)

思考:JS中for循环嵌套有什么特点?

参考代码:

方案1:

 /*  设1元a张,2元b张,5元c张
  */
        function f(N, M) {
            var arr = [];
            for (var a = 0; a <= N; a++) {
                for (var b = 0; b <= N; b++) {
                    for (var c = 0; c <= N; c++) {
                        if (a + 2 * b + 5 * c == M && a + b + c == N) {
                            arr.push(a + ',' + b + ',' + c);
                        };
                    }
                }
            }
            if (arr.length == 0) {
                console.log("无解");
            } else {
                console.log(arr);
            }

        }
        f(10, 23);//=>["2,8,0", "5,4,1", "8,0,2"]

方案2

        /* 转换为数学问题
        设1元a张,2元b张,5元c张,列出方程组
        a+b+c=N
        a+2b+5c=M
        获得关系式
        b+4c=M-N
        0≤N - b - c
        (M-N)为常数,因此问题本质是用JS解决一个一元一次直线方程在限定范围内的非负整数解,类似线性规划的非负整数解。     
        */

        function f1(N, M) {
            var arr = [];
            for (var b = 0; b <= M - N; b++) {
                for (var c = 0; c <= M - N; c++) {
                    var a = N - b - c;
                    if (b + 4 * c == M - N) {
                        if (a >= 0) {
                            arr.push(a + ',' + b + "," + c);
                        }
                    }
                }
            }

            if (arr.length !== 0) {
                console.log(arr);

            } else {
                console.log("无解");
            }

        }

         f1(10, 18);  //=>["8,0,2", "5,4,1", "2,8,0"]

 

 

最后

以上就是害羞黄蜂最近收集整理的关于JavaScript中for循环嵌套编程小案例的全部内容,更多相关JavaScript中for循环嵌套编程小案例内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(150)

评论列表共有 0 条评论

立即
投稿
返回
顶部