gpt4 book ai didi

c - 使用不带循环的递归在 C 中编写程序以获得所需的输出

转载 作者:行者123 更新时间:2023-11-30 19:32:09 24 4
gpt4 key购买 nike

使用递归方法(即无循环)重写冒泡排序,以及在运行递归排序之前和之后打印出数组的打印数组函数。数组是:

int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102 }

编写一个函数来读取命令行参数并处理两个开关:“-min”和“-max”。如果选择“-min”,则数组按从最小到最大的顺序排序。如果选择“-max”,则数组按从最大到最小的顺序排序。

使用名为 rsort.exe 的程序的发布版本从 Windows cmd 提示符生成输出。如果命令行上未提供参数,则打印出一条帮助消息,类似于以下内容:

用法:c:> rsort.exe WHERE -min [最小值到最大值],或 -max [最大值到最小值

来自评论的代码。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102 };
int find_max(int *array,int max,int i);
if (i>=0)
{
if (array[i]>array[max])
{
find_min(array,i,i-1);
}
find_min(array,max,i-1);
}
return max;
}

最佳答案

将发布我刚刚制作的快速且草率的递归冒泡排序。find_max 进行升序排序。如果您想要降序排序,只需切换较低的值而不是较大的值即可。

每次调用 find_max 时,我都会打印 spos 只是为了给您提示工作的样子。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int find_max(int [], size_t, int, int);

int main(void)
{
int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102};

find_max(ary, sizeof(ary)/sizeof(int), 0, 0);

for(int i=0; i<sizeof(ary)/sizeof(int); i++)
{
printf("%d \n", ary[i]);
}
return 0;
}

int find_max(int numbers[], size_t len, int spos, int recurs)
{

int temp_len = len - recurs;

if(numbers[spos]>numbers[spos+1])
{
numbers[spos]^=numbers[spos+1];
numbers[spos+1]^=numbers[spos];
numbers[spos]^=numbers[spos+1];
}

printf("%d position \n", spos);

if(recurs == (len-2))
{
return 0;
}

if(spos == (temp_len-2))
{
find_max(numbers, len, 0, recurs+1);
}
else
{
find_max(numbers, len, spos+1, recurs);
}
}

关于c - 使用不带循环的递归在 C 中编写程序以获得所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47381834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com