我试图创建一个接受一个整数参数的递归方法和打印第一Ñ正方形 由逗号分隔的,与奇数的正方形以降序随后在升序甚至正方形订购。递归分割断完全平方用于显示
例如,如果输入是8,它应该打印以下输出:
49, 25, 9, 1, 4, 16, 36, 64
到目前为止我的代码是:
s
和n
具有相同的值最初,唯一的区别是这是随着代码转发而改变的,而n
不会改变。
private static void genSquare(int s, int n) {
if (s >= 0 && s <= n) {
if (isOdd(s)) {
System.out.print(Math.pow(n, 2) + " ");
genSquare(s - 2, n);
}
if (s == 0 || s == 1) {
genSquare(1, n);
}
if (isEven(s)) {
System.out.print(Math.pow(n, 2) + " ");
genSquare(s + 2, n);
}
}
}
我已经创建了一个while循环版本,它完美的工作。我只是没有递归版本的工作。
样本输入将对s和n使用相同的数字。
下面是循环版本的代码:
private void genLoop(int s, int n) {
if (isEven(s)) {
s--;
}
while (s <= n) {
if (s == 1) {
System.out.print(1 + " ");
s++;
} else if (isOdd(s)) {
System.out.print(s * s + " ");
s -= 2;
} else if (isEven(s)) {
System.out.print(s * s + " ");
s += 2;
}
}
}
真棒mam,你真的是一个算法师! 非常感谢您的帮助。 – Jaydeep 2011-12-25 06:40:25
伟大的工作@Algorithmist ...现在OP不需要做他的功课! >><<叹 – 2011-12-25 07:04:56