问题:找到某个门后面的人.
递归:大门 -> 很多小门 -> 很多小门 …
栈:大门 -> 栈 ,出栈,打开门 –> 小门入栈 –> 出栈,打开门 – 小门入栈.
栈与递归的差别是,递归在内存之中,最外层的门其实未释放的.而递归是一直在压栈,出栈,拆解.所以,一般而言递归不会程序栈(内存)溢出.
递归代码:
Man open(Door door) {
if (door.isHasMan){
return door.man ;
}
if (door.isHasNextDoor){
//递归
return open(door.nextDoor)
}
}
栈代码:
Man open(Door door){
Man man ;
Stack
stack.push(door) ;
Door tmp ;
while(stack.size() != 0){
tmp = stack.peer() ;
if (tmp.isHasMan){
man = tmp.man ;
break ;
}
if (tmp.hasNextDoor){
stack.push(tmp.nextDoor) ;
}
}
}