java利用遞迴求陣列和的幾種方法

2021-08-22 07:29:22 字數 1061 閱讀 3213

本例項不是為了說明這幾種方法效率問題,只是為提供乙個新的思路。

參考總結了4種思想。

a=begin=0;end=a.length()-1;

1,從begin開始一直加到end

2,從end開始一直加到begin

3,begin和end同時開始進行加法操作

4,定義中點middle,對[begin,middle),[middle,end)進行操作,思想:二分法

public class a1test 

// 列印begin-end

public static void f2(int begin, int end)

// 求a陣列中,從begin到結束的元素和

private static int f3(int a, int begin)

// 求a陣列中,從end到第乙個的元素和

private static int f4(int a, int end)

// 兩邊逼近求和

private static int f5(int a, int begin, int end)

if (end - begin == 0)// 陣列長度為奇數

int x = f5(a, begin + 1, end - 1);

system.out.println(x);

return x + a[begin] + a[end];

} // 折半求和 利用中間值

private static int f6(int a, int begin, int end)

public static void main(string args) ;

// int sum=f3(a, 0);

// int sum=f4(a, a.length-1);

// int sum = f5(a, 0, a.length - 1);

int sum = f6(a, 0, a.length - 1);

system.out.println(sum);

}}

此次僅為自我總結,防止忘記。

求陣列的小和

陣列小和定義如下 有一陣列s 1,3,5,2,4,6 在s 0 的左邊小於或等於s 0 的數的和為0,在s 1 的左邊小於或等於s 1 的數的和為1,以此類推,把每個元素的左邊小於或等於當前元素的和加起來,就是該陣列的小和,s的小和為0 1 4 1 6 15 37 如下 public class p...

求陣列的小和

陣列小和的定義 例如,陣列s 1,3,5,2,4,6 在s 0 的左邊小於等於s 0 的數的和為0,在s 1 的左邊小於或等於s 1 的數和為1,在s 2 的左邊小於等於s 2 的數和為1 3 4.一次類推s 3 1,s 4 1 3 2 6,s 5 15,所以s的小和為0 1 4 1 6 15 27...

求陣列的最大值和次大值 (迭代 遞迴)

參考 資料結構 鄧俊輝 求陣列a 在區間 lo,hi 內的最大值和第二大值。返回最大值的下標x1和第二大值的下標x2 迭代1 void max2 int a,int lo,int hi,int x1,int x2 迭代2 相對於迭代1不會改進最壞情況下的時間複雜度 void swap int x,i...