`

递归思想

阅读更多

  数据结构第五章讲述的递归,算法较复杂时,递归对时间和空间的要求很大,但是递归的一个好处就是可以大大简化代码,便于阅读。有回溯的递归转化为非递归时非常麻烦,称为复杂的递归

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)的真正起点,开始递归*/

分享到:
评论

相关推荐

    基础算法,递归思想算法,阶乘算法

    在IT领域,算法是解决问题的核心工具,而递归思想是其中一种重要的思维方式。本文将深入探讨基础算法、递归思想以及阶乘算法,同时我们还会看到如何使用C语言来实现这些概念。 首先,基础算法是计算机科学的基础,...

    VB6采用递归思想绘制树的源码

    在VB6(Visual Basic 6)编程环境中,利用递归思想来绘制树形结构是一种常见的图形编程技巧。递归是一种算法,它通过调用自身来解决问题或执行任务,每次调用都解决一个更小的问题,直到达到某个基本条件为止。在...

    5.6 递归思想和递归函数1

    递归函数是实现递归思想的一种方式,通常在函数内部调用自身来解决复杂问题。本节将深入探讨递归思想和递归函数的概念,并通过几个具体的Python示例来阐述其工作原理和应用。 首先,理解递归的关键在于明确两个核心...

    C++递归思想课件下载

    **C++递归思想详解** 递归是一种强大的编程技术,尤其在C++中,它能够以简洁优雅的方式解决复杂的问题。递归的核心在于函数或算法自身调用自身,通过不断缩小问题规模,直到达到基本情况为止。本篇我们将深入探讨...

    汉诺塔问题与递归思想教学设计.doc

    "汉诺塔问题与递归思想教学设计" 在计算机科学与技术、软件工程等专业领域中,数据结构与算法课程占据着核心地位,为计算机类相关专业的核心骨干课程。数据结构与算法课程面向计算机科学与技术、软件工程等计算机类...

    C++简单的递归思想

    c++语言的简单程序示例,通过递归方法求数组。

    Python语言使用函数递归思想绘制圣诞树

    Python语言使用函数递归思想绘制圣诞树,递归算法(recursion algorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是...

    漫谈递归思想

    递归思想及其应用 递归思想是编程中的一种重要算法,然而它却是让人摸不着头脑的基本算法之一。许多时候,我们花费很多时间来搞明白一个复杂的递归,尤其是当我们对问题的概念不清晰时。今天,我们来讨论递归思想的...

    资源管理器代码,利用递归思想

    通过以上讨论,我们可以看到,递归思想在实现资源管理器这样的项目中起着至关重要的作用,它使我们可以优雅地处理复杂的数据结构,同时类库的使用提升了代码的可维护性和复用性。在实际应用中,还需要结合其他设计...

    在C++中利用递归思想实现反序数

    在C++中利用递归思想实现反序数

    一个简单的代码教你明白递归思想

    使用递归思想完成:有一对小兔子,长到三个月,每月生出一对小兔子,依次类推,假设兔子都不死,问10个月后有几只兔子?

    5·5递归算法,递归思想

    递归算法是编程中一种非常重要的思想,尤其在Java这样的面向对象编程语言中,它的应用广泛且深入。递归的基本原理是将一个大问题分解为若干个相同或相似的小问题来解决,这些小问题同样可以用同样的方法去解决,直到...

    递归思想和案列和分治法思想的案例

    递归思想和案列(阶乘函数,Fibonacci数列,Ackerman函数,整数划分问题,Hanoi塔问题)分治法思想的介绍(大整数的乘法,Strassen矩阵乘法,棋盘覆盖问题,二分搜索,快速排序,合并排序,线性时间选择)。算法课使用的ppt,可结合...

    填空8-1 采用递归思想求斐波那契数列.py

    填空8-1 采用递归思想求斐波那契数列.py

    java基础编程:递归思想求解第5个人的年龄问题

    java基础编程:递归思想求解第5个人的年龄问题

    C语言的递归思想实例分析

    本文实例分析C语言的递归思想,分享给大家供大家参考之用。具体方法如下: 通俗点来说,递归就是自己调用自己。 递归的难点一是理解递归的执行调用过程,二是设置一个合理的递归结束条件。 下面来看一段摘自书中的...

    02 清华版 数据结构 002 递归思想与程序构建 2022.exe

    02 清华版 数据结构 002 递归思想与程序构建 2022.exe

    实验二递归与分治

    快速排序算法是基于递归思想的,它通过选择一个pivot元素,然后将数组分成三个部分:小于pivot的元素,等于pivot的元素,大于pivot的元素。然后,递归地对这三个部分进行排序,最终将整个数组排序。 分治法 分治法...

    递归法解决迷宫问题

    此代码展示了一种用递归解决迷宫问题的方法,可以自行输入迷宫即得到解答

    TreeView控件绑定Excel数据实例(递归思想加载)

    本实例将探讨如何利用TreeView控件来显示Excel数据,并结合递归的思想进行加载。递归是一种强大的编程技巧,尤其适用于处理具有嵌套结构的数据。 首先,我们需要了解如何读取Excel数据。在C#中,可以使用`Microsoft...

Global site tag (gtag.js) - Google Analytics