什么是遞歸?
遞歸是指把大問題化成小而相似的問題羔飞,然后小問題變化為更小的問題肺樟,直到能很容易解決。
遞歸必要條件
1.迭代前后逻淌,兩問題之間有明確關(guān)系式么伯,且兩問題具有相同的形式。
2.遞歸有結(jié)束條件卡儒。
func(condition){
if(end){
// return solution
}
func(lessCondition)
}
舉例:計(jì)算 n!
關(guān)系式:factorial(n!)=n*factorial(n-1)
結(jié)束條件:0田柔!=1
public class Factorial {
int n;
public static int factorial(int n) throws Exception{
if(n<0){
throw new Exception("Negative number error!");
}
if(n==0){
return 1;
}
return n*factorial(n-1);
}
public static void main(String[] args) throws Exception {
System.out.println(factorial(-4));
}
}