收藏 分享(赏)

t4(3)-递归算法.ppt

上传人:无敌 文档编号:378340 上传时间:2018-04-03 格式:PPT 页数:20 大小:728.50KB
下载 相关 举报
t4(3)-递归算法.ppt_第1页
第1页 / 共20页
t4(3)-递归算法.ppt_第2页
第2页 / 共20页
t4(3)-递归算法.ppt_第3页
第3页 / 共20页
t4(3)-递归算法.ppt_第4页
第4页 / 共20页
t4(3)-递归算法.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、第四章,栈与队列,栈队列递归算法递归的概念递归在数学方面的应用递归在数据结构方面的应用递归过程的实现递归的应用设计递归算法的注意点,本章目标,递归:在定义自身的同时又出现了对自身的引用递归函数:直接地或间接地调用自身的算法直接递归函数间接递归函数,递归的概念,走迷宫骑士游历,递归的概念,递归函数调用时,按照“后调用先返回”的原则处理调用递归过程必须通过栈来实现,递归的概念,递归在数学方面的应用(1): xn = x*x*x*.*x*x(2): S(n) = 1+2+.+(n-1)+n要计算xn+1或 S(n+1),可利用前面计算过的结果以求得答案: xn+1= xn*xS(n+1)= S(n)

2、+(n+1)这种利用前面运算来求得答案的过程就叫递归过程,递归的应用,将一个复杂的大问题,分割成一些规模较小的类似的子问题规模最小的子问题具有直接解,递归的应用,原问题,子问题1,子问题2,子问题3,.,递归算法,注:每个递归函数都必须有非递归定义的初始值!,递归的应用,【例4.5】 求n!,/求解阶乘函数的递归算法long fact ( int n ) if ( n = 0 ) return 1; else return n * fact (n-1) ; ,递归的应用,f(n)=nf(n-1),递归的应用,参数传递,主程序 main : fact(4),参数 4 计算 4*fact(3),参

3、数 3 计算 3*fact(2),参数 2 计算 2*fact(1),参数 1 计算 1*fact(0),参数 0 直接定值 = 1,结果返回,递归调用,回归求值,返回 24,返回 6,返回 2,返回 1,返回1,递归的应用,【例4.6】 求Fibonacci序列,递归的应用,int fib ( int n ) if(n=1) return 1; return fib (n-1)+fib (n-2) ;,Fibonacci数列:1,1,2,3,5,8,13,21,34,55,.,递归的应用,public static void line(int i) if (i10) line(i+1); S

4、ystem.out.print(String.format(%3d,i);,【例4.7】打印数字塔,使用递归的优点对问题描述简洁,结构清晰,程序的正确性易证明。使用递归的常见算法分治法回溯法动态规划,递归的注意点,分治二分搜索算法(经典)问题:给定已排好序的n个元素a0:n-1要求:在这n个元素中找出一特定的元素x条件1、这n个元素是有序的。2、元素x是特定的。基本思想:将n个元素分成个数大致相同的两半,取中间元素与x进行比较,如果相等则找到x,算法终止!如果xan/2则在数组的右半部继续搜索x.,递归的注意点,递归的注意点,假设 e =42,12 17 28 31 33 36 38 42 59,left =,0,right =,8,middle =,4,0,1,2,3,4,5,6,7,8,5,6,1,2,7,7,3,使用递归算法的前提:原问题可以层层分解为类似的规模更小的子问题;规模最小的子问题具有直接解。如求n!中,n=0时,0!=1,递归的注意点,若递归设计时递归出口设计不当,递归的注意点,/无穷递归的例子/讲不完的故事void Story()print(“从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对小和尚说:”);Story();,设计递归算法的方法:寻找分解方法:将原问题分解为子问题设计递归终止条件。递归算法的效率较低。,递归的注意点,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报