程序打印序列的长度,序列中的最大数字,从1到数字的最长序列以及从打开到数字的最长序列的数字。我有一切正确,除了函数startNum(int n),它应该将具有最长的冰雹序列的数字从一个返回到该数字“n”。代码返回错误的数字,正确的答案是9,因为它具有从1到16的最长序列,但函数starNum返回16
答案 0 :(得分:0)
我认为问题是startNum函数中的n--
。在某些时候,您将使用n=2
调用startNum。然后在val = n--;
n将递减为1,然后用n-1 = 0
调用递归。你的基本情况是n == 1
,所以如果n小于1,那么它将继续无限 - 或者直到你的堆栈内存不足,在这种情况下。
答案 1 :(得分:0)
当n = 2时,调用冰雹(0)并且没有为0定义冰雹。