清华大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 递归

第沉章递归 递归( Recurve)的概念 迷宫(Maze问题 递归过程与递归工作栈 广义表( General lists)
递归(Recurve)的概念 迷宫(Maze)问题 递归过程与递归工作栈 广义表 (General Lists )

递归的概念 递归的定义若一个对象部分地包含它自 己,或用它自己给自己定义,则称这个对象 是递归的;若一个过程直接地或间接地调 用自己,则称这个过程是递归的过程 在以下三种情况下,常常用到递归方法。 定义是递归的 数据结构是递归的 问题的解法是递归的
递归的概念 递归的定义 若一个对象部分地包含它自 己, 或用它自己给自己定义, 则称这个对象 是递归的;若一个过程直接地或间接地调 用自己, 则称这个过程是递归的过程。 在以下三种情况下,常常用到递归方法。 定义是递归的 数据结构是递归的 问题的解法是递归的

定义是递的 例如,阶乘函数 当n=0时 n*(n-1)!,当n≥1时 求解阶乘函数的递归犷法 long Factorial (long n)& if(n==0)return 1; else return n* Factorial(n-1);
定义是递归的 求解阶乘函数的递归算法 long Factorial ( long n ) { if ( n == 0 ) return 1; else return n*Factorial (n-1); } 例如,阶乘函数 − = = 当 时 当 时 ( 1)!, 1 1, 0 ! n n n n n

求解阶乘n!的过程 参数 计算 返回 0 0!=I 0 参数 计算 返回 1*Factorial(o) 参 1返 参数 计算 返回 数 2 2*Factorial(1) 2 传 参数 计算 返 3 Factorial (2) 6 递3 6值 参数 计算 返回 壬* Factorial(39) 24 24 主程序main
求解阶乘 n! 的过程

计算斐波那契数列的函数Fib(m)的定义 0.1 Fib(n) Fib(n-1)+Fib(n-2), n>1 求解斐波那契教列的递归犷法 long Fib( long n)& if (n<=1)return n; else return Fib(n-1)+ Fib(n-2);
计算斐波那契数列的函数Fib(n)的定义 求解斐波那契数列的递归算法 long Fib ( long n ) { if ( n <= 1 ) return n; else return Fib (n-1) + Fib (n-2); } − + − = = ( 1) ( 2), 1 , 0,1 ( ) Fib n Fib n n n n Fib n

数据结构是递归的 例如,单链表结构 f 搜索链表最后一个结点并打即其数值 template void Find( listNode sf)i if(f→link==NUL) cout≤<f→data<<endl; else find(f→lhik)
数据结构是递归的 搜索链表最后一个结点并打印其数值 template void Find ( ListNode *f ) { if ( f →link == NULL ) cout << f →data << endl; else Find ( f →link ); } 例如,单链表结构

在链表中寻找等于给定值的结点 并打印其数值 template void Print ListNode *)i if(f!= NULL) if(→dta==x) cout data < endl; else print(f→link);
在链表中寻找等于给定值的结点 并打印其数值 template void Print ( ListNode *f ) { if ( f != NULL) if ( f →data == x ) cout << f→data << endl; else Print ( f→link ); }

问题的解法是递归的 例如,汉诺塔( Tower of hanoi)问题 B
问题的解法是递归的 例如,汉诺塔(Tower of Hanoi)问题

include #include strclass. h void Hanoi (int n, String A, string B, string C) {M解决汉诺塔问题的算法 if (n==1)cout <<"move <<a<< to <<C<< endl elsei Hanoi(n-1, A, C, B); cout <<move <<a<<to << c <K endl: Hanoi(n-1, B, A,C);
#include #include "strclass.h” void Hanoi (int n, String A, String B, String C ) { //解决汉诺塔问题的算法 if ( n == 1 ) cout << " move " << A << " to ” << C << endl; else { Hanoi ( n-1, A, C, B ); cout << " move " << A << " to " << C << endl; Hanoi ( n-1, B, A, C ); } }

迷宫问题小型迷官「4 路口动作结果 76 3 1(入口)正向走进到2 23 左拐弯进到3 右拐弯进到4 4(堵死)回溯退到3 6 3(堵死)回溯退到2小左0直2右0 2正向走进到5型行3行5行6 迷 5(堵死)回溯退到2宫 2右拐弯进到6的 左拐弯进到7数 0007 0000 4000 (出口)据7
迷宫问题 小型迷宫 路口 动作 结果 1 (入口) 正向走 进到 2 2 左拐弯 进到 3 3 右拐弯 进到 4 4 (堵死) 回溯 退到 3 3 (堵死) 回溯 退到 2 2 正向走 进到 5 5 (堵死) 回溯 退到 2 2 右拐弯 进到 6 6 左拐弯 进到 7 (出口) 4 3 5 2 1 7 6 6 左 0 直 2 右 0 行 3 行 5 行 6 0 0 4 0 0 0 0 0 0 7 0 0 7 小 型 迷 宫 的 数 据
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第四章 栈与队列.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 链表.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 数組.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第十章 搜象与散列.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)上机实验一进程控制与描述.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第九章 虚拟存储器管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第八章 实存储器管理技术.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第七章 死锁(Deadlock).ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第六章 多处理器系统和处理器管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第五章 并行性:同步和互斥.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第四章 线程.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第三章 进程管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第二章 操作系统的运行环境.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第一章 概述.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第八章 计算机维护和多媒体技术.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第七章 计算机网络与Internet.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第六章 Power Point2000.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第五章 中文 Excel2000.pps
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第四章 文字编辑系统中文Word2000.pps
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树与森林.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 集合与拽索.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第八章 图.ppt
- 清华大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 排序.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第四章 二元关系.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)期末总复习(各章复习).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)绪论、第一章 命题逻辑(主讲:许桂清).ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第二章 谓词逻辑.ppt
- 东北大学:《离散数学》课程教学资源(试题)2001级总本.doc
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 东北大学:《离散数学》课程教学资源(PPT课件讲稿)第三章 集合论基础.ppt
- 湖南大学:《C++程序设计》目录.ppt
- 湖南大学:《C++程序设计》第10章 静态成员与友元.ppt
- 湖南大学:《C++程序设计》第11章 继承和派生类.ppt
- 湖南大学:《C++程序设计》第12章 模板.ppt
- 湖南大学:《C++程序设计》第13章 多态性与虚函数.ppt
- 湖南大学:《C++程序设计》第14章 I/O流.ppt
- 湖南大学:《C++程序设计》第15章 异常处理.ppt
- 湖南大学:《C++程序设计》第16章 C++程序设计实例.ppt