按照課本「白話演算法」第四章的遞迴練習
練習一下遞迴的使用,有些程式語言編寫的邏輯都是使用遞迴,反而沒有迴圈的概念,例如(Haskell)
要求:求陣列{1,2,3,4,5}總和
這個用迴圈很快就完成了
int sum=0; for(int i = 0; i< a.length; i++){ sum += a[i]; }
用遞迴的話,主要是練習Divide&Conquer的思考,找出遞迴的base case
public class Try { public static void main(String[] args) { int a [] = {1,2,3,4,5}; System.out.print(sum(a)); } public static int sum(int a[]){ if(a.length==1){ //base case 直到陣列長度剩1才回傳該數值 return a[0]; } int newA [] = new int[a.length-1]; //若不是1,就創建一個縮短一個長度的陣列 System.arraycopy(a,1,newA,0,newA.length); //複製元陣列除了的第一個之外的元素 return a[0]+ sum(newA); //加上原陣列的第一個數 } }
全站熱搜
留言列表