为了混技术分也是拼了。
百度告诉我们: 递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。
也就是找出问题的求解规律,将其转换为一个最小解,通过不断得到一个个最小解不断推进进而的到问题的解。以愚公移山为例:
愚公自己不能把山移走,但他想了一个办法:我和我的子子孙孙一直干下去总有一天能把山移走。这个想法表明:
1:山的总量是固定的,问题总能解决掉;
2:每一代人都干这个事。把一个人解决不了的事化成了子子孙孙每个人的事,对愚公而言降低了问题的规模。我只要把我自己能移走的移了就 可以了,剩下 的交给子孙就可以,他们还可以进一步把任务留给后代。
解决算法:
void moveMountain(第N代人){ //移山工程落在我的肩上,好呀好开兴
if(山没了){
祭祖:山终于移走了;
}else{
完成我自己能办到的工作量;
moveMountain(第N+1代人);//靠你了N+1代目(愚公)
}
就这样吧。
|
|