gpt4 book ai didi

java - 即使条件为 true,Return 语句也不会脱离 block

转载 作者:行者123 更新时间:2023-12-01 22:43:42 29 4
gpt4 key购买 nike

这是一个简单的程序,用于检查一个数字是否符合斐波那契数。我有一个神秘的错误:“return true”语句没有被触发。相反,“hi”将被打印多次。 Return 应该突破该方法,有人知道为什么不突破吗?谢谢!

import java.util.*;
public class Solution {

public static boolean listFibs (long oldestFib, long oldFib, long input) {
long newFib = oldestFib + oldFib;

while (newFib < Math.pow(10,10)) {

if (newFib == input) {
System.out.println("hi");
return true;
}

listFibs(oldFib, newFib, input);
}

return false;
}


public static void main(String[] args) {
/*Scanner in = new Scanner(System.in);
int testCases = in.nextInt();
for (int i = 0; i < testCases; i++) {
int a = in.nextInt();
System.out.println("A= " + a);
System.out.println(listFibs(0, 1, a));
}*/

System.out.println(listFibs(0, 1, 5));

}}

最佳答案

由于递归,listFibs 有许多化身。 返回只留下其中之一。

在给出的示例中,您会收到以下调用:

listFib(0,1,5)
listFib(1,1,5)
listFib(1,2,5)
listFib(2,3,5)
-> true
listFib(2,3,5) // called again due to the loop
-> true
listFib(2,3,5) // called again due to the loop
-> true
listFib(2,3,5) // called again due to the loop
-> true
listFib(2,3,5) // called again due to the loop
...

关于java - 即使条件为 true,Return 语句也不会脱离 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25696942/

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