用遞迴實現1到100的和,1到10的階乘
阿新 • • 發佈:2019-01-03
遞迴:方法定義中呼叫方法本身的現象
注意實現:
1.遞迴一定要有出口,否則就是死遞迴 StackOverflowError
2.遞迴的次數不能過多,否則也會出現死遞迴
特殊事項:構造方法不可以遞迴定義
舉例:
從前有座山,山上有座廟,廟裡有個老和尚,老和尚再給小和尚講故事,故事是:
從前有座山,山上有座廟,廟裡有個老和尚,老和尚再給小和尚講故事,故事是:
從前有座山,山上有座廟,廟裡有個老和尚,老和尚再給小和尚講故事,故事是:
程式碼塊
遞迴1-100的和
public class DiguiHe{ public static void main(String[] args) { System.out.println("遞迴1-100和:"+dghe(5)); System.out.println("遞迴1-100和:"+fdghe(5)); } /** * 遞迴1-100和 * @Author Mr.Peng */ private static int dghe(int i) { /** * 這裡以5為例: * 5+dghe(4)=5+4+dghe(3)=5+4+3+dghe(2)+5+4+3+2+dghe(1)=5+4+3+2+1 * 當dghe(1)走 return 1;程式結束了 */ if(i == 1){ return 1; }else{ return i+dghe(i-1); } } /** * 非遞迴1-100和 * @Author Mr.Peng */ private static int fdghe(int i) { int sum = 0; int j = 1; while(j<=i){ sum+=j; j++; } return sum; } }
遞迴10的階乘
public class DiguiChen{ public static void main(String[] args) { System.out.println("遞迴階乘:"+dgjc(10)); System.out.println("非遞迴階乘:"+fdgjc(10)); } /** * 遞迴階乘 * @Author Mr.Peng */ private static int dgjc(int i) { //這裡舉例5的階乘,10的階乘同理: //5*dgjc(4)=5*4*dgjc(3)=5*4*3*dgjc(2)=5*4*3*2*dgjc(1)=5*4*3*2*1=120 if(i == 1){ return 1; }else{ return i*dgjc(i-1); } } /** * 非遞迴階乘 * @Author Mr.Peng */ private static int fdgjc(int i) { // TODO Auto-generated method stub int sum = 1; while(i>0){ sum*=i; i--; } return sum; } }