递归

深刻理解递归算法javascript

人理解迭代,神理解递归java

递归与循环的区别算法

递归:你打开面前这扇门,看到屋里面还有一扇门(这门可能跟前面打开的门同样大小(静),也可能门小了些(动)),你走过去,发现手中的钥匙还能够打开它,你推开门,发现里面还有一扇门,你继续打开,。。。, 若干次以后,你打开面前一扇门,发现只有一间屋子,没有门了。 你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你能够回答出你到底用这钥匙开了几扇门。code

循环:你打开面前这扇门,看到屋里面还有一扇门,(这门可能跟前面打开的门同样大小(静),也可能门小了些(动)),你走过去,发现手中的钥匙还能够打开它,你推开门,发现里面还有一扇门,(前面门若是同样,这门也是同样,第二扇门若是相比第一扇门变小了,这扇门也比第二扇门变小了(动静如一,要么没有变化,要么一样的变化)),你继续打开这扇门,。。。,一直这样走下去。 入口处的人始终等不到你回去告诉他答案。递归

 

模型一: 在递去的过程当中解决问题ip

function recursion(大规模){
    if (end_condition){      // 明确的递归终止条件
        end;   // 简单情景
    }else{            // 在将问题转换为子问题的每一步,解决该步中剩余部分的问题
        solve;                // 递去
        recursion(小规模);     // 递到最深处后,不断地归来
    }
}

 

模型二: 在归来的过程当中解决问题it

function recursion(大规模){
    if (end_condition){      // 明确的递归终止条件
        end;   // 简单情景
    }else{            // 先将问题所有描述展开,再由尽头“返回”依次解决每步中剩余部分的问题
        recursion(小规模);     // 递去
        solve;                // 归来
    }
}
/**
 * 关于 递归中 递进和回归的理解
 * @param n
 */
public static void recursion_display(int n) {
    int temp=n;//保证先后打印的值同样
     System.out.println("递进:" + temp);
    if (n > 0) {
        recursion_display(--n);
    }
    System.out.println("回归:" + temp);
}
相关文章
相关标签/搜索