递归逆序打印字符串

概述

原字符串abcde,打印为edcba,利用递归调用实现。

递归定义

初步理解:方法内部调用方法自身

实现思路

先打印最后一个字符,再打印前一个字符,递归调用本过程即可。

package com.lovehena.recursion;

import lombok.extern.slf4j.Slf4j;

/*
 *   递归打印字符串逆序,如abcde 打印为 edcba
 * */
@Slf4j
public class ReversePrintStr {
    public static void main(String[] args) {
        String str = "Hello world";
        reversePrintV2(str, str.length() - 1);
    }

    /*
    *   递归调用逆序打印字符串 从字符串的最后一个字符开始打印 V1
    * */
    private static void reversePrintV1(String s, int index) {
        if (index == 0) { // index减小到为0时就应该结束递归,并且由于打印字符的语句是在递归调用内的 所以需手动调用一次 System.out.print(s.charAt(index));
            System.out.print(s.charAt(index));
            return;
        }
        System.out.print(s.charAt(index));
        reversePrintV1(s, index - 1);
    }

    /*
     *   递归调用逆序打印字符串 从字符串的最后一个字符开始打印 V2
     * */
    private static void reversePrintV2(String s, int index) {
        if (index == -1) { // index减小到为-1时表示 上一次递归调用时已经输出了索引为0的字符 此时直接结束递归即可
            return;
        }
        System.out.print(s.charAt(index));
        reversePrintV2(s, index - 1);
    }

    // todo 扩展:递归调用逆序打印字符串 从字符串的第一个字符开始打印 
}

测试结果

递归逆序打印字符输出

扩展

递归调用逆序打印字符串 从字符串的第一个字符开始打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值