java算法递归算法练习-数组之和

简单找个题目练习一下递归算法,输入一组数组,使用递归的方法计算数组之和。其实这个题目,用循环的方式也很简单就能解决,直接循环遍历一下相加就行了,但是我们用来练习一下递归。

先来找基线条件和递归条件

基线条件:当数组下标为0的时候,说明只剩一个值了,直接返回值就行

递归条件:长度大于0的话,就需要相加并递归调用,直到满足基线条件

java 复制代码
package com.dlh.test.算法;

import java.util.Scanner;

public class 递归算法之计算数组之和 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] string = sc.nextLine().split(" ");
        int[] array = new int[string.length];
        for (int i = 0; i < string.length; i++) {
            array[i] = Integer.parseInt(string[i]);
        }
        int result = calcnum(array,array.length-1);//此处填入数组最右侧的下标,从右侧开始往左侧以及相加
        System.out.println(result);
    }
    private static int calcnum(int[] array, int i) {
        int result = array[i];
        if (i < 1){//当数组下标小于1的时候,直接返回值
            return array[i];
        }else {
            i--;//数组下标往左移动一位
            result = result + calcnum(array,i);//进行递归调用
        }
        return result;
    }
}
相关推荐
blackicexs8 分钟前
第六周第日天
数据结构·算法
逆境不可逃8 分钟前
LeetCode 热题 100 之 48.旋转图像
算法·leetcode·职场和发展
予枫的编程笔记11 分钟前
【Kafka进阶篇】Kafka延迟请求处理核心:时间轮算法拆解,比DelayQueue高效10倍
java·kafka·高并发·时间轮算法·delayqueue·延迟任务·timingwheel
西门吹雪分身13 分钟前
JUC之公平锁与非公平锁
java·并发·juc·
Frostnova丶17 分钟前
LeetCode 1022. 从根到叶的二进制数之和
算法·leetcode
不会敲代码121 分钟前
别再背柯里化面试题了,看完这篇你自己也会写
javascript·算法·面试
张铁铁是个小胖子21 分钟前
mysql事务的隔离性如何保证
java·开发语言
lonelyhiker22 分钟前
新版idea的structure卡顿
java·ide·intellij-idea
snowfoootball22 分钟前
优先队列/堆 题目讲解
学习·算法
SamtecChina202323 分钟前
Samtec连接器设计研究 | 载流量:温升为什么重要?
大数据·网络·人工智能·算法·计算机外设