资源简介 (共19张PPT)递归1 递归的概念3 递归算法的设计方法递归2 递归算法的执行过程递归(把问题不断分解为可操作性的小问题)(把小问题的结果返回给大问题,达到最终目的)递归终结条件大问题的解决中嵌套着与原问题相似的规模较小的问题,这种问题的解决方法在计算机科学中称为递归,它通过函数自己调用自己来实现,即一个函数在其定义中直接或间接调用自身的一种方法。递归的概念阶乘的定义:一个正整数的阶乘是所有小于及等于该数的正整数的乘积。递归算法的执行过程——求阶乘n!= n*(n-1)!n != n *(n-1)*…*2*1(n-1)!= (n-1)*…*2*1递归规律1 (n=1)f(n)=n*f(n-1 )( n>1 )def f (n):if n == 1:return 1else:return n* f(n-1 )print(f(5))f(5)=5*f (4)f(4)=4*f (3)递推f(3)=3*f (2)递推f(2)=2*f (1)递推f(1)=1递推5!=?回归:11回归:22回归:66回归:2424def f (n):if n == 1:return 1else:return n* f(n-1 )print(f(5))5!=120递归=递推+回归递归算法的执行过程——求阶乘操作演示递归算法的设计方法把原问题分解成若干个相对简单且类型相同的小问题,这样复杂的原问题就变成相对简单的子问题,而简单到一定程度的子问题可以直接求解,最终原问题就可以通过递推得到解答。设计方法1.能够归纳出恰当的递归公式。2.必须要有一个明确的递归终止条件。探究活动——求解斐波那契数列一对刚出生的小兔子,一个月后就能成长为成年兔,再过一个月后(即第三个月起)就每月生一对兔子。新生的兔子也按这个规律繁殖。现在仅有一对刚出生的小兔子,问在没有兔子死亡的情况下,一年后总共繁殖成多少对兔子。意大利数学家斐波那契分析表 一月二月三月四月五月1对2对3对5对1对分 析 表 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月小兔 1 1 1 2 3 5 8 13 21 34 55大兔 1 1 2 3 5 8 13 21 34 55 89合计 1 1 2 3 5 8 13 21 34 55 89 144+=+=+=+=+=+=+=+=+=+=数列规律:从第三项开始,后面的数总是前两数之和数列规律:从第三项开始,后面的数总是前两数之和递归终结条件def f(n):if n == 1 or n == 2:return 1else:return f(n-1) + f(n-2)print(f(12))分 析 表 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月小兔 1 1 1 2 3 5 8 13 21 34 55大兔 1 1 2 3 5 8 13 21 34 55 89合计 1 1 2 3 5 8 13 21 34 55 89 144+=1 n=11 n=2f(n-1) + f(n-2) n>2f(n)=递归公式def f(n):if n == 1 or n == 2:return 1else:return f(n-1) + f(n-2)print(f(5))斐波那契数列求解的执行过程主程序f(5)函数f(4)函数f(3)函数f(3)函数f(2) =1函数f(2) =1函数f(1)=1函数f(2)=1函数f(1)=1操作演示知识拓展——斐波那契数列螺旋线斐波那契螺旋线也称为“黄金螺旋线”,是以斐波那契数列数字为半径,连续绘制圆弧得到的螺旋线。知识拓展——斐波那契数列螺旋线课堂小结递归递归的概念把问题转化为规模较小的同类子问题,通过函数自己调用自己来实现。递归算法的执行过程递归算法的设计方法先传递,再回归1.能够归纳出恰当的递归公式。2.必须要有一个明确的递归终结条件谢谢 展开更多...... 收起↑ 资源预览