java解决常见递归问题

embedded/2024/10/18 9:24:52/

最基本的,斐波那契数列,阶乘(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/embedded/6476.html

相关文章

项目实践---贪吃蛇游戏的实现

上一章,我们已经分析了贪吃蛇的具体内容,包括它是如何实现的,怎样完成这个项目的,其中就提到了 贪吃蛇有三个代码:一个是测试代码,一个是头文件代码,还有一个是主函数代码。那么今天我们就来讲一…

从OWASP API Security TOP 10谈API安全

1.前言 应用程序编程接口(API)是当今应用驱动世界创新的一个基本元素。从银行、零售、运输到物联网、 自动驾驶汽车、智慧城市,API 是现代移动、SaaS 和 web 应用程序的重要组成部分,可以在面向客 户、面向合作伙伴和内部的应用程…

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.12枚举

枚举(enumeration)是C语言的一种重要数据类型,由用户自定义一组命名的整数常量。使用枚举可以使程序具有可读性及可维护性。 1 定义枚举类型 在C语言中,使用enum关键字来定义枚举类型。下面以LED为例,介绍枚举类型的…

Jmeter 测试-跨线程调用变量

1、Jmeter中线程运行规则 ①各个线程组是完全独立的,每个线程组是不同的业务,互不影响 ②线程组中的每个线程也是完全独立 ③线程组中的每个线程,都是从上往下执行,完成一轮循环后,继续下一轮循环 ④存在业务流或者…

Qt 创建控件的两种方式

目录 Qt 创建控件的两种方式 通过ui界面创建控件 通过代码方式创建控件 Qt 创建控件的两种方式 通过ui界面创建控件 这里当然我们是需要先有一个项目的,按照我们之前创建项目的步骤,我们可以先创建一个 Widget 的项目,但是 MainWindow 也…

开源博客项目Blog .NET Core源码学习(16:App.Hosting项目结构分析-4)

本文学习并分析App.Hosting项目中前台页面的文章专栏页面和文章详情页面。< 文章专栏页面 文章专栏页面总体上为左右布局&#xff0c;左侧显示文章列表&#xff0c;右侧从上向下为关键词搜索、分类导航、热门文章等内容。整个页面使用了layui中的面包屑导航、表单、模版、流…

MATLAB环境下基于随机期望最大化的多分量信号瞬时频率估计方法

相对于频率成分单一、周期性强的平稳信号来说&#xff0c;具有非平稳、非周期、非可积特性的非平稳信号更普遍地存在于自然界中。调频信号作为非平稳信号的一种&#xff0c;由于其频率时变、距离分辨率高、截获率低等特性&#xff0c;被广泛应用于雷达、地震勘测等领域。调频信…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(1)——场景故事介绍

生成NPC为交互应用程序创建逼真的人类行为模拟。在这项工作中&#xff0c;我们通过将二十五个NPC放置在一个沙盒环境中&#xff08;类似于The Sims&#xff0c;模拟人生&#xff09;&#xff0c;展示了生成NPC的能力。用户可以观察和干预NPC的日常计划、分享新闻、建立关系以及…