如何在 C 语言中以递归方式反转数组
在本教程中,我们希望以递归方式编写数组反转函数。事实证明,与迭代相比,递归方法更困难,但递归程序更正式。
首先,我们需要定义递归的情况。首先,需要编写迭代方法的程序来理解.
此图分三步解释了 i 和 n-i, 重复该操作,直到达到绘画长度的一半。我们只需要在数组的前半部分重复该操作,否则我们将把后半部分的元素与已经处理的前半部分的元素交换,然后我们回退到我们的起始数组。
以下代码使用迭代方法交换数组:
首先,我们需要定义递归的情况。首先,需要编写迭代方法的程序来理解.
此图分三步解释了 i 和 n-i, 重复该操作,直到达到绘画长度的一半。我们只需要在数组的前半部分重复该操作,否则我们将把后半部分的元素与已经处理的前半部分的元素交换,然后我们回退到我们的起始数组。
以下代码使用迭代方法交换数组:
#include执行此代码给出:
#include
int main()
{
int i,n,temp;
printf(数组大小”);
scanf(%d”,&n);
int t[n];
for(i=0;我{
printf(t[%d]=”,i);
scanf(%d”,&t[i]);
}
i=0;
while(i{
温度 = t[i];
//n-1 因为数组以 0
t[i]=t[n-1-i];
t[n-1-i]=温度;
i++;
}
printf(\n反表:\n”);
for(i=0;我{
printf(\nt[%d]=%d”,i,t[i]);
}
getch();
}
使用递归方法在 C 语言中反转数组
现在我们有了迭代方法的程序,我们将创建一个正式版本。你要问一个问题,它与什么不同?井!递归版本是一个调用自身直到到达支点的函数。这个递归调用相当于迭代版本中的循环。
你只需要转换迭代程序就可以得到一个递归程序。支点是 while 循环中的停止条件我(在程序中我们把 i>=(n+1)/2因为调用函数时,数组 n-1 的大小减小了)。i 成为函数的主要参数,因为停止测试是在 i.
你只需要转换迭代程序就可以得到一个递归程序。支点是 while 循环中的停止条件我
以下示例说明如何递归反转 C.
#include
#include
int* 反转(int[],int,int);
main()
{
int i,n;
printf(数组的大小”);
scanf(%d”,&n);
int t[n];
int *ti;
for(i=0;我{
printf(t[%d]=”,i);
scanf(%d”,&t[i]);
}
ti=inverse(t,n-1,0);
printf(\n反向数组为:\n”);
for(i=0;我{
printf(\nt[%d]=%d”,i,ti[i]);
}
getch();
}
int* inverse(int t[],int n, int i)
{
int temp;
if(i>=(n+1)/2 )
返回 t;
else{
温度 = t[i];
t[i]=t[n-i];
t[n-i]=温度;
反向返回 (t,n,i+1);
}
}