gpt4 book ai didi

java - 计算字符串中空格的递归方法如何工作?

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:24 26 4
gpt4 key购买 nike

我正在尝试完全理解该方法的工作原理,请参阅下面的代码:

public static void main(String[] args) {
System.out.println(countspaces("a number of spaces "));
}

public static int countspaces(String s) {
if (s.length() == 0)
return 0;
else
return (s.charAt(0) == ' ' ? 1 : 0) + countspaces(s.substring(1));
}

我已经使用 BlueJ 调试了该方法。线路:

return (s.charAt(0) == ' ' ? 1 : 0) + countspaces(s.substring(1));

首先检查索引 0 处的字符是否为空格,然后它再次调用自身(这使其递归)以 s 从索引 1 开始的子字符串作为参数有效地将参数从“多个空格”更改为"到 "number of spaces "并一直这样做直到参数的 length() 达到 0。我不明白的是为什么它不返回 01000000100100000010(最后一个 0 表示终止循环的空字符串 s)但是 4?我看不到代码中的什么地方总结了

返回的 1
(s.charAt(0) == ' ' ? 1 : 0)

并忽略 0。请告诉我我的推理中缺少什么。

非常感谢

Grzegorz(格雷格)

最佳答案

由于该方法返回一个 int,而不是一个字符串,它添加数字,而不是连接为字符/字符串。即

0+1+0+0+0+0+0+0+1+0+0+1+0+0+0+0+0+0+1+0 == 4

不是

"0"+"1"+"0"+"0"+"0"+"0"+"0"+"0"+"1"+"0"+"0"+"1"+"0"+"0"+"0"+"0"+"0"+"0"+"1"+"0" 
== "01000000100100000010"

下面返回一个 int,因为 countspaces 返回一个 int

return (s.charAt(0) == ' ' ? 1 : 0) + countspaces(s.substring(1));

关于java - 计算字符串中空格的递归方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869016/

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