java解决常见递归问题

最基本的,斐波那契数列,阶乘(0,1的阶乘均为1)

返回字母"x"第一次出现的位置

使用递归编写一个函数,读取一个字符串,返回字母"x"第一次出现的位置。例如,字符串

"abcdefghijklmnopqrstuvwxyz"中"x"第一次出现在索引 23 处。为简单起见,假设字符

串一定至少有一个"x"

java 复制代码
public class FindFirstPos {
    public static void main(String[] args) {
        String info = "abcdefghijklmnopqrstuvwxyz";
        System.out.println(FindFirstCharPos(info, 'x'));
    }
    public static int FindFirstCharPos(String info, char c){
       if(info.charAt(0) == c){
           return 0;
       }
       else{
           return 1 + FindFirstCharPos(info.substring(1), c);
       }
    }
}

字符串数组长度求和

使用递归编写一个函数,读取一个字符串数组,返回所有字符串的字母数之和。

如果输入数组是["ab", "c", "def", "ghij"],那么因为一共有 10 个字母,

所以函数应该返回 10

java 复制代码
public class StringSum2 {
    public static void main(String[] args) {
        String[] arr = {"ab", "c", "world","def", "ghij","hello"};
        System.out.println(sumStr(arr, arr.length-1));
    }
    public static int sumStr(String[] arr, int n){
        if(n == 0){
            return arr[n].length();
        }
        else{
            return arr[n].length() + sumStr(arr, n - 1);
        }
    }
}
java 复制代码
public class PathNum {
    public static void main(String[] args) {
        int[][] arr = new int[3][7];
        System.out.println(pathNum(arr, 0, 0));
    }
    public static int pathNum(int[][] arr, int i, int j) {
        if(i == arr.length - 1 || j == arr[0].length - 1){
            return 1;
        }
        else {
            return pathNum(arr, i + 1, j) + pathNum(arr, i, j + 1);
        }
    }
}

判断回文

java 复制代码
public class Huiwen {
    public static void main(String[] args) {
        String info = "abcczba";
        System.out.println(isHuiWen(info));
    }
    public static boolean isHuiWen(String info){
        if(info.length() == 1){
            return true;
        }
        else if(info.length() == 2){
            return info.charAt(0) == info.charAt(1);

        }
        else{
            return (info.charAt(0) == info.charAt(info.length() - 1)) && isHuiWen(info.substring(1,info.length()-1));
        }
    }
}
相关推荐
fouryears_234172 小时前
Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
开发语言·flutter·客户端·dart
我好喜欢你~2 小时前
C#---StopWatch类
开发语言·c#
桦说编程3 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen3 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研3 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员4 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋5 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cui__OaO5 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
阿华的代码王国5 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~5 小时前
《设计模式》装饰模式
java·设计模式