数据结构第五章讲述的递归,算法较复杂时,递归对时间和空间的要求很大,但是递归的一个好处就是可以大大简化代码,便于阅读。有回溯的递归转化为非递归时非常麻烦,称为复杂的递归
question1:通过在主函数里调用自定义函数print(5);在屏幕上输出
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
void print(int n)
{
int i;
if(n!=0)//出口
{
print(n-1);
for(i=1;i<=n;I++)
printf(" %d",i);
printf("\n");
}
}
一些人可能会以为输出的是
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
这是不正确的,真正的执行过程如下:
回溯print(5)
{
print(4);/*执行到print(4)会继续递归下去,不会执行下面的语句*/
for(i=1;i<=5;I++)
printf(" %d",i);
printf("\n");
}
print(4)
{
print(3);
for(i=1;i<=4;I++)
printf(" %d",i);
printf("\n");
}
print(3)
{
print(2);
for(i=1;i<=3;I++)
printf(" %d",i);
printf("\n");
}
print(3)
{
print(2);
for(i=1;i<=3;I++)
printf(" %d",i);
printf("\n");
}
print(2)
{
print(1);
for(i=1;i<=1;I++)
printf(" %d",i);
printf("\n");
}
调用print(1);/*由于print(0)不满足if语句, 所以print(1)为print(5)的真正起点,开始递归*/
相关推荐
VB6采用递归思想绘制树的源码:粗细、分叉等等
C++递归课件 简单的递归思想 递归思想入门
第五章 函数与应用5.6递归思想和递归函数正确答案:B你选对了如果递归函数没有递归结束的语句,将会导致无穷递归,从而执行时出现“死循环”正确答案:2 3 6如下
c++语言的简单程序示例,通过递归方法求数组。
基础算法,数据结构,阶乘思想,采用c语言实现,对于数据结构基础的学习有帮助
Python语言使用函数递归思想绘制圣诞树,递归算法(recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是...
在C++中利用递归思想实现反序数
使用递归思想完成:有一对小兔子,长到三个月,每月生出一对小兔子,依次类推,假设兔子都不死,问10个月后有几只兔子?
汉诺塔问题与递归思想教学设计.doc
递归思想和案列(阶乘函数,Fibonacci数列,Ackerman函数,整数划分问题,Hanoi塔问题)分治法思想的介绍(大整数的乘法,Strassen矩阵乘法,棋盘覆盖问题,二分搜索,快速排序,合并排序,线性时间选择)。算法课使用的ppt,可结合...
填空8-1 采用递归思想求斐波那契数列.py
java基础编程:递归思想求解第5个人的年龄问题
本文实例分析C语言的递归思想,分享给大家供大家参考之用。具体方法如下: 通俗点来说,递归就是自己调用自己。 递归的难点一是理解递归的执行调用过程,二是设置一个合理的递归结束条件。 下面来看一段摘自书中的...
02 清华版 数据结构 002 递归思想与程序构建 2022.exe
应用于java中的算法 递归算法:是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
理解递归思想,方便更好的在程序中使用
一个不错的资源管理器,已经把功能类提出来写成了类库,更方便以后调用。 其中运用了递归的思想
此代码展示了一种用递归解决迷宫问题的方法,可以自行输入迷宫即得到解答
用递归实现C#树形结构 ,用递归实现C#树形结构 ,
二分法 解函数 c++语言 c语言 递归 数根