《六年級信息技術上冊 第13課 遞歸調用課件 遼師大版(三起)》由會員分享,可在線閱讀,更多相關《六年級信息技術上冊 第13課 遞歸調用課件 遼師大版(三起)(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、遞歸調用 使用遞歸求解問題,通??梢詫⒁粋€比較大的問題層層轉化為一個與原問題相類似的、規(guī)模較小的問題進行求解,最終達到對原問題的求解。 用遞歸計算n!n!可以由下列公式表示:n!1 n=0n(n-1)! n0分析:把求n!轉化為求(n-1)!的問題,因為(n-1)!乘上n就是n!。而求(n-1)!又可以轉化為求(n-2)!的問題,.最后歸結到求0!的問題,而0!已定義為1。由0!=1又一步步反上去求出1!,2!,.直到求出n!。Program p7_20(input,output); var n:integer; s:integer;Function fac(a:integer):intege
2、r;Begin if a=0 then fac:=1 else fac:=a*fac(a-1);End;BeginReadln(n);S:=fac(n);Writeln(n,!=,s)End. 能用遞歸算法求解的問題一般應該滿足如下要求: 符合遞歸的描述:需要解決的問題可以化為子問題求解,而子問題求解的方法與原問題相同,只是數(shù)量增大或減少; 遞歸調用的次數(shù)是有限的; 必須有遞歸結束的條件。用遞歸方法求兩個數(shù)M和N 的最大公約數(shù)Program p7_21(input,output);Var m,n,g:integer;Function gcd(m,n:integer):integer; var
3、r:integer; begin r:=m mod n; if r=0 then gcd:=n else gcd:=gcd(n,r);End;Begin read(m,n);g:=gcd(m,n);Writeln(m=,m,n=,n,gcd=,g);End.輸入一串以!結束的字符,按逆序輸出Program p7_22(input,output);Procedure rever; var c:char;Begin read(c); if c! then rever; write(c);End;Begin rever;End.Program p7_23(input,output);Var x:in
4、teger;Function up(var n:integer):integer;Forward;Function down(var n:integer):integer; begin n:=n div 2; writeln(n,in down); if n1 then n:=up(n);End;Function up;Begin while(n mod 2)0 do begin n:=n*3+1;Writeln(n,in up);End;N:=down(n);End;BeginWrite(input x:);Readln(x);X:=up(x);Writeln(ok)End.運行:運行:Input x:63 in down10 in up5 in down16 in up8 in down4 in down2 in down2 in downok