gpt4 book ai didi

java - 为什么这种计算两个字符的递归 Java 方法有效?

转载 作者:行者123 更新时间:2023-11-30 01:52:35 26 4
gpt4 key购买 nike

目前正在尝试学习Java。我刚刚解决了一些递归问题,遇到一个要求我计算子字符串“hi”在另一个字符串中出现的次数的问题。我正在寻找递归方法来做到这一点,我发现了一个代码基本上可以完成我想要的事情,并且我可以解释,但我不明白它是如何/为什么工作的。我对其他递归问题没有任何疑问,并且我理解在函数体内调用函数的概念,但这段代码的工作方式让我感到困惑。在调试器中单步调试它让我很困惑。

 public int countHi(String str) {
int n = str.length();
if(n <= 1) return 0;

if(str.substring(0, 2).equals("hi"))
return countHi(str.substring(1)) + 1;

return countHi(str.substring(1));
}

最佳答案

通常所有递归都分解为两个主要见解:

  • 基本情况(或终止情况):最简单的问题是什么?哪些地方不需要简化?

  • 递归案例:如何使用更简单的问题解决方案来解决当前问题?

这里的基本情况是字符串太短 - 少于两个字符的字符串显然不能包含“hi”。

这里的递归情况是,以“hi”开头的字符串比字符串的其余部分多一个“hi”,但是当您砍掉开头时,字符串的“hi”数量并不完全相同.

代码对这两个见解进行了编码。

关于java - 为什么这种计算两个字符的递归 Java 方法有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com