穷举,百鸡问题

穷举

遇到一个问题,找不到更好的办法(找不到数学公式或者规律)时,使用“最笨”的办法,利用计算机速度快的特点,将所有的可能性全部列出来,并将我们想要得到的效果记录下来

例如百鸡问题:

/*
 百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡邹三,
 * 值钱一。百钱买鸡,问鸡翁、鸡母和鸡邹各几何。
 * 鸡翁cock
 * 鸡母 hen
 * 鸡雏 chicken
 * cock+hen+chicken=100;
 * cock*5+hen*3+chicken/3 =100;
 */
    for(var cock=0;cock<=20;cock++){
        for(var hen=0;hen<=33;hen++){
            var chicken =100-cock-hen;
            if(100==cock*5+hen*3+chicken/3){
                document.write("鸡翁一共"+cock+"鸡母一共"+hen+"小鸡一共"+chicken+"<br>");
            }
        }
    }

穷举方法的特点是算法简单,相应的程序也简单,但计算量往往很大,但是计算机的优势就是运算速度快,所以此算法可以扬长避短,往往可以取得不错的效果

比如:一个三位数,个位大于百位,百位大于个位,并且各个数之和等于

8.5递归

所谓递归,就是在函数内部又去调用自己

例如:求阶乘问题,在fact函数内部又去调用fact函数

function fact(n){
    if(1==n){
        return 1;
    }
    return n*fact(n-1);
}
alert(fact(5));

递归的算法如果按照常规思路去理解是非常复杂的,函数调用一层一层嵌套调用,然后又一层一层返回。不妨慌思路去理解递归

递归实际上就是将规模为你的问题降阶为n-1的问题进行求解。也就是去找nn-1关系

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值