在我写关于递归的算法时(线索二叉树遍历),总是想把递归的步骤一一列出来保证其准确,但是跟着教辅上的代码走流程都有点跟不上,自己写代码的时候怎么保证递归的正确性呢,感觉递归算法和迭代不同,很难在脑中将递归过一遍,这种将其都列出来的思想是不是错误的呢?老手写递归的时候能够使递归在脑中走一遍吗?
朋友你好,递归算法的确有时候比较难以直观地在脑中进行跟踪和理解。不过,通过一些技巧和经验,你可以提高编写和理解递归算法的能力。首先,要确保正确定义了递归的终止条件,这是保证递归正确性的基础。然后,尽量理解递归的基本思想,即将大问题分解成更小的子问题并通过递归调用解决。在理解递归函数时,你可以假设递归调用会按照函数定义的方式工作,将其视为一个已经解决了的子问题。同时,将递归的执行过程写下来是一个有用的技巧,可以使用注释或者画图表示每一步的操作,更清晰地理解递归的执行流程。此外,你可以通过输出调试信息、打印变量值等方式来跟踪递归的执行过程,并编写一些测试用例来验证递归算法的正确性。最后,学习和阅读优秀的递归算法代码也可以提升你的理解和写作能力。记住,掌握递归需要一定的练习和经验,随着时间的推移,你会变得更熟悉和自信的。加油!希望回答可以为你提供一些解决思路,望采纳!
这个不难吧,只要确定终止递归的条件基本上不难理解,还有需要递归涉及的数据结构,综合理解一下个人觉得🈚️什么可以钻牛角尖的,个人观点
不知道你这个问题是否已经解决, 如果还没有解决的话:平台会对你编写的代码进行测试: 输入: 输入排好序的字符串1 abcdefg 输入排好序的字符串2 1234567 输出: 1234567abcdefg
#include<stdio.h>
#include<string.h>
#define SIZE 100
void resort(char *a)
{
int i=0,j=0;
int len=strlen(a);
char temp;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
char arr1[SIZE];
char arr2[SIZE];
int n;
puts("输入排好序的字符串1");
gets(arr1);
puts("输入排好序的字符串2");
gets(arr2);
n=strcmp(arr1,arr2);
if(n<0)
{
strcat(arr1,arr2);
resort(arr1);
puts(arr1);
}
else
{
strcat(arr2,arr1);
resort(arr2);
puts(arr2);
}
return 0;
}