【发布时间】:2014-05-29 07:13:59
【问题描述】:
所以手头的任务是创建一个递归方法,它接受一个数字 num,并让它打印出从 1 到指定最大数字的平方数。首先显示奇数格,从最大倒数到 1,然后倒数偶数格(从 2 开始),直到最大偶数。
我知道如何让递归倒计时正常,但我不知道如何让它倒计时。每次我这样做都会陷入无限循环。
int squares(int);
int main()
{
cout << "Enter a number: ";
int num;
cin >> num;
squares(num);
cin.ignore(cin.rdbuf()->in_avail());
cout << "\nPress only the 'Enter' key to exit program: ";
cin.get();
return 0;
}
int squares(int num)
{
if (num == 1)
{
return 1;
}
else
{
if (num % 2 == 0)
{
num -= 1;
cout << num * num << " ";
return squares(num - 2);
}
else if (!num % 2 == 0)
{
cout << num * num << " ";
return squares(num - 2);
// edited this because it had an old return i meant to change b4 posting
}
}
}
【问题讨论】:
-
!的运算符优先级高于%,因此if (num % 2 == 0)和else if (!num % 2 == 0)并未涵盖所有可能性。可能不是你的问题,但我觉得这很奇怪。 -
您是否需要在单个函数中执行此操作?
-
@merlin2011 是的。 Abhishek 发布的版本很接近,但它没有考虑数字“1”。它从奇数到偶数穿过正方形,但没有显示#1
标签: c++ recursion computer-science