
我用了两种写法 前面的答案都没问题 就是到了n==130的时候,一种得到答案为2(正确答案),一种得到的答案为4,但是,我把第二种错误答案的代码改一下,就是把下面的for循环,改成i=2开始,答案就变成了2,就正确了,我不知道为什么,百思不得其解,求解!!

这是第一种正确的代码,求平方数的个数就相当于在求深度,这里的深度体现在temp+1上

这是第二种答案有错误的代码,n等于130的时候出现了错误正确答案是2,这个dfs得出来的是4,我想的是每往下递归一层,index就+1,这里的index是层数(深度),初始化为0 只要我把i初始化为2 答案就正确了 不知道是什么原因 我觉得这两种写法应该是一个意思啊。
我运行了一下,第一种和第二种结果是一样的
是不是可能栈运行有异常的情况
你这样试试:
- 测试一:输入90(=81+9)看是不是对的,如果是对的,说明程序逻辑没有啥问题,注意下各个变量的初始化
- 测试二:把for从1到sqrt(n),改成从大sqrt(n)到1在试一下130的情况
- 注意取的sqrt(n)值要能循环到,比如130,要能到循环到11