資源簡介 (共12張PPT)4.3 非數值計算—— 兔子數列課 前 復 習1.以下程序的執行結果為:知識點檢測函 數主程序先執行主程序只有調用函數的時候才能執行函數部分教 學目 標通過求解斐波那契數列,體驗遞歸算法,并結合具體問題開展編程實踐。理解迭代與遞歸的異同。兔 子 數 列def fib(n):f2 = f1 = 1for i in range(3, n+1):f1, f2 = f2, f1+f2return f2n = int(input('輸入需要計算的月份數:'))print('兔子總對數為:', fib(n))input("運行完畢,請按回車鍵退出...")Fibonacci數列 :1,1,2,3,5,8,13,21,34……迭 代 法遞歸法一遞歸算法直接或間接地調用自身的方法稱為遞歸。可以將遞歸簡單類比為具有自相似性重復的事物。遞歸的基本思想是把規模較大的問題層層轉化為規模較小的同類問題求解。可用“分”,“治”,“合”三個字概括遞歸的基本思想一遞歸算法遞推關系遞歸的條件邊界條件+從第三項起,每一項都是緊挨著的前兩項的和,即 fib[i] = fib[i-1] + fib[i-2],Fibonacci數列 :1,1,2,3,5,8,13,21,34……遞歸關系:邊界條件:fib(n) = fib(n-1)+ fib(n-2) (n>2)fib(n) = 1 (n=1 或者 n=2)課 堂 活 動def f(n):if n == 1 ① n == 2:return 1else:return ②n=int(input("輸入要求的n的值"))print("第", n, "個月的兔子數為", ③)使用遞歸法求第n個月的兔子數一遞歸算法def f(n):if n == 1 or n == 2:return 1else:return f(n-1)+f(n-2)n=int(input("輸入要求的n的值"))print("第", n, "個月的兔子數為", f(n))n=4f(4)f(3)f(2)f(2)f(1)11123二迭代與遞歸迭代:重復反饋過程直到達到結果遞歸:調用函數自己課 堂 小 練求階層分別用迭代和遞歸兩種方法求n! (n!=1*2*3……n)def f(n):if n==0 ① n==1:return 1else:return ②n=int(input("請輸入n:"))print("n的階層為:",③)def fac(n):s=1for i in range(2, ①):s=s*i②abs=int(input('請輸入階乘數n:'))print("n的階層為:",③)課 堂 小 結THE END 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫