概述
穷举
遇到一个问题,找不到更好的办法(找不到数学公式或者规律)时,使用“最笨”的办法,利用计算机速度快的特点,将所有的可能性全部列出来,并将我们想要得到的效果记录下来
例如百鸡问题:
/*
百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡邹三,
* 值钱一。百钱买鸡,问鸡翁、鸡母和鸡邹各几何。
* 鸡翁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的问题进行求解。也就是去找n和n-1关系
最后
以上就是平常钢笔为你收集整理的穷举,百鸡问题的全部内容,希望文章能够帮你解决穷举,百鸡问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复