【发布时间】:2017-11-22 08:34:08
【问题描述】:
我正在尝试编写一个完全没有循环的递归排序函数。
void insertionSortRecursive(int arr[], int n)
{
if (n <= 1)
return;
insertionSortRecursive( arr, n-1 );
int last = arr[n-1];
int j = n-2;
while (j >= 0 && arr[j] > last)
{
arr[j+1] = arr[j];
j--;
}
arr[j+1] = last;
}
有没有办法摆脱while循环并仍然使这个函数工作?
【问题讨论】:
-
为什么不创建第二个函数?顺便说一句,合并循环更容易用递归编写。
-
虽然您可以在没有循环的情况下编写它,但这样做不是一个好主意。
-
没有实际的理由来消除循环。实际上,对于大多数实际目的,您都希望消除递归!
-
这一定是学校作业@RaymondChen。没有人告诉开发人员消除循环以支持递归
-
嗯,是的,这肯定是一个 homework.dump。所有这些“不用锤子敲钉子”的问题对未来的 SO 用户来说几乎没有用处:(
标签: c arrays sorting recursion