数组求和的3种常见递归方法

---恢复内容开始---

要求:

  已知数组 int[ ] a,

  输出:a[0]+a[1]+...+a[end]的值

方法1:a[begin] + { a[begin+1]...a[end] }

 1 import java.util.Scanner;
 2 //递归求数组和
 3 public class demo1 {
 4 
 5     public static int f(int[]a,int begin){
 6         if(begin==a.length) 
 7             return 0;
 8         int x = f(a,begin+1);
 9         return x+a[begin];
10     }
11     public static void main(String[] args) {
12         int []a = {1,2,3,4,5};
13         int sum = f(a,0);
14         System.out.println(sum);
15     }
16 
17 }

 

方法2:{ a[0] ... a[end-1] } + a[end]

 

 1 import java.util.Scanner;
 2 //递归求数组和
 3 public class demo1 {
 4 
 5     public static int f(int[]a,int end){
 6         if(end==-1) 
 7             return 0;
 8         int x = f(a,end-1);
 9         return x+a[end];
10     }
11     public static void main(String[] args) {
12         int []a = {1,2,3,4,5};
13         int sum = f(a,a.length-1);
14         System.out.println(sum);
15     }
16 
17 }

 

 方法3:折半求和,mid = (begin+end)/2,(a[begin]...a[mid]]+(a[mid]+a[end]]

  

 1 import java.util.Scanner;
 2 //递归求数组和
 3 public class demo1 {
 4 
 5     public static int f(int[]a,int begin,int end){
 6         int mid = (begin+end)/2;
 7         if(begin>end) 
 8             return 0;
 9         if(begin==end)
10             return a[end];
11         else
12             return f(a,begin,mid)+f(a,mid+1,end);
13     }
14     public static void main(String[] args) {
15         int []a = {1,2,3,4,5};
16         int sum = f(a,0,a.length-1);
17         System.out.println(sum);
18     }
19 
20 }

 

---恢复内容结束---

转载于:https://www.cnblogs.com/yg1024/p/7726481.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值