![]() |
1
0
这里只有一个结构性问题。到达单个返回并不会折叠整个调用堆栈,它只返回到上一次调用。 您需要保存每次调用getNextTime()的结果,并将其用作返回值,以便实际找到的值沿着调用链传回并返回给初始调用方。目前,您只返回传入的数字,因为您从未修改它。 修复是一个非常简单的修改。你在哪里
将其替换为
您选择的算法的问题是效率低下。您只需要使用较小的素数来测试整除性,而不是所有的奇数,并且只需要使用 平方根 原始编号的。 实现是一项练习。 |
![]() |
2
0
当我们使用参数8调用函数时,让我们看看调用堆栈; 第一个调用是:getNextTime(8)。由于数字是偶数,该函数进入if部分,并使用getNextTime(9)再次调用自身。这次else部分开始,检查for循环中的可整除性,发现9是可整除的,所以调用getNextPrime(11)。现在getNextTime(11)再次执行else和for循环,发现11是prime,并将数字11返回给调用者,但如果仔细观察,则不会将此值存储在变量中,getNextTime调用中的num变量是9,当getNextTime(9)返回该值时,它会将该值返回给getNextTime(8)。在getNextTime(8)中,也没有真正存储从递归调用堆栈返回的num变量。您只需返回该函数中定义的num变量,在调用getNextTime(11)之前,该变量恰好递增,因此该值为9,返回9。 下面给出了带有相同if-else块的更正程序,供您参考。
|
![]() |
3
-1
您的返回声明很好,但是。。您在逻辑中遗漏了1、2和3。2是偶数素数,1不是素数。 |