当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

递归思想

发表于: 2014-04-19   作者:麦田的设计者   来源:转载   浏览:
摘要:   数据结构第五章讲述的递归,算法较复杂时,递归对时间和空间的要求很大,但是递归的一个好处就是可以大大简化代码,便于阅读。有回溯的递归转化为非递归时非常麻烦,称为复杂的递归 question1:通过在主函数里调用自定义函数print(5);在屏幕上输出 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5   void print(int n) { in

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

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

递归思想

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本文借鉴:http://blog.csdn.net/m13666368773/article/details/7531463 今天说说递归思想,在我们
递归思想博大而精深,巧妙而精简,需要慢慢体会. 知识点小结:   问题经过泛化之后,定义一个函数
问题及代码: /*2015,烟台大学计算机与控制工程学院 *作者:桑立 *完成日期:2015年11月2日 *问题描
今天说说递归思想,在我们编码时,有的时候递归能够让我们的算法更加通俗易懂,并且代码量也是大大
程序员:左正康 发表时间:2013年12月16日 0:56 代号:与老鼠共处一室的日子 算法设计思想:算法中
分治策略(Divide and Conquer)是一种常用的算法技术,使用分治策略设计的算法通常是递归算法.很多时
7 递归
一场足球赛开始前,售票工作正在紧张的进行中,每张球票为50元。 现有2n个人排队等待购票,其中有n
8 递归
递归 先来看下treeview的简单应用: 一、nodes 二、往节点里面添加内容 下面再给大家复习下递归: 什
9 递归
递归在程序设计中属于较难理解的部分,程序员新手往往感觉递归无从入手,这主要在于递归的过程并不
10 递归
.* 程序的版权和版本声明部分 02.* Copyright (c)2012, 烟台大学计算机学院 03.* All rightsreserve
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号