java解决常见递归问题

ops/2024/10/18 7:58:31/

最基本的,斐波那契数列,阶乘(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));}}
}

http://www.ppmy.cn/ops/6458.html

相关文章

《springcloud alibaba》 六 微服务链路跟踪skywalking

目录 准备调整配置接入多个微服务网关项目调整order-seata项目stock-seata项目测试 接入网关微服务 skywalking持续化到mysql自定义链路跟踪pom .xmlorderControllerOrderServiceOrderDaoOrderTblMapper.xml测试 性能剖析日志tid打印pom.xmllogback-spring.xml日志收集启动项目…

计算机网络(王道考研)笔记个人整理——第一章

第一章 OSI/ISO参考模型 下层向上层服务,每一层次有特定的协议和功能,协议为功能服务,是打包和拆包的过程 物联网淑 慧试用 应用层:所有能和用户交互产生网络流量的程序 典型应用层服务:文件传输(FTP&#…

小例子Flask网站开发—args(三)

在Flask当中args充当的角色与任务。 在 Flask 中,args 通常用于从 URL 查询参数中获取值。它主要用在路由函数中,通过 request.args.get() 方法来获取 URL 中的查询参数。以下是一些使用 args 的常见场景:1. 构建动态路由:通过在路…

CSS3 max/min-content及fit-content、fill-available值的详解

c3中对width的值多了几个值&#xff1a;fill-available, max-content, min-content, 以及fit-content。 1.width:fill-available 我们在页面中扔一个没有其他样式的<div>元素&#xff0c;则&#xff0c;此时&#xff0c;该<div>元素的width表现就是fill-availabl…

.NET 发布,部署和运行应用程序

.NET应用发布 发布.Net应用有很多种方式&#xff0c;下面列举三种发布方式&#xff1a; 单文件发布跨平台发布Docker发布 单文件发布 右键工程&#xff0c;选择“发布”&#xff0c;部署模式选择“独立”&#xff0c;目标运行时选择自己想要部署到的系统&#xff0c;我这里用…

Python 数据结构和算法实用指南(二)

原文&#xff1a;zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第四章&#xff1a;列表和指针结构 我们已经在 Python 中讨论了列表&#xff0c;它们方便而强大。通常情况下&#xff0c;我们使用 Python…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式&#xff08;demo1.Iterator Pattern&#xff09;是Java中一种常用的设计模式&#xff0c;它提供了一种顺序访问一个聚合对象中各个元素&#xff0c;而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

OpenCV基本图像处理操作(十一)——图像特征Sift算法

图像尺度空间 在一定的范围内&#xff0c;无论物体是大还是小&#xff0c;人眼都可以分辨出来&#xff0c;然而计算机要有相同的能力却很难&#xff0c;所以要让机器能够对物体在不同尺度下有一个统一的认知&#xff0c;就需要考虑图像在不同的尺度下都存在的特点。 尺度空间的…