gpt4 book ai didi

java - 这是否被视为递归?

转载 作者:行者123 更新时间:2023-11-30 02:41:57 24 4
gpt4 key购买 nike

 public boolean q0() {

if(word[0] != 'a') {
System.err.println("Word not accepted!");
System.exit(0);
}

if(word.length-1 > cont && word[cont] == 'a') {
cont++;
return q0();
}
else if(word[cont] == 'b') {
q1();
}

return false;
}

我的代码运行良好。但我必须确定这是否实际上是递归

最佳答案

它在技术上是递归的,是的,因为 q0() 调用自身。

不过,它是有缺陷的。它使用一个外部变量cont,该变量在调用之间会发生变化。让 cont 成为在不同调用之间传递的参数而不是可变的外部状态要好得多。

这个:

cont++;
return q0();

会变成这样:

return q0(cont + 1);

此外,这个分支很不寻常:

else if(word[cont] == 'b'){
q1();
}

应该是return q1();吗?我的猜测是您的意图是转发 q1 的返回值。或者 q1() 实际上有副作用吗?如果是后者,那就是巨大的代码味道。

关于java - 这是否被视为递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421120/

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