所以我有一个编程项目,我需要创建一个程序来确定一个数字是否是一个完美的正方形,如果是,把它写进一个.txt文档。对于for循环来说,这是非常容易和有效的,然而,赋值的指令说程序应该使用递归来完成这一点。这是我提出的迭代语句:
double division;
for (int i = 0; i < inputs.size(); i++) {
division = (Math.sqrt(inputs.get(i)));
if (division == (int)division) {
pw.println(inputs.get(i));
}
}
哪里 inputs
是通过读取用户的输入创建的arraylist。这解决了问题,但正如我所说,它需要是一个递归语句。我知道对于递归,我需要一个基本情况,它最终会使方法停止调用自己,但我不知道基本情况是什么。另外,我也看到了几个从迭代到递归的转换示例,但是所有这些示例都使用一个 int
变量,在我的例子中,我需要用一个arraylist。任何帮助都将不胜感激
3条答案
按热度按时间nbysray51#
您可以递归地检查任何较小int的平方是否等于您的输入。
snvhrwxg2#
对于递归函数,可以使用二进制搜索算法:
dddzy1tm3#
你可以用一个事实,一个平方数是奇数整数的和。例如
1+3 = 4 = 2^2
1+3+5 = 9 = 3^2
1+3+5+7=16=4^2等
输出: