C語言遞歸練習_第1頁
C語言遞歸練習_第2頁
C語言遞歸練習_第3頁
C語言遞歸練習_第4頁
C語言遞歸練習_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、die遞歸基礎練習題:求 1+2+3+11 的值iiit sum(int a.iiit b)if(b=a) return a;return a+sum(a+l,b);求 1*2*3*n 的值cheng(int begin, int end)if(begin=end) return begin;retuin begin * cheng(begm+1 ,end);數的全排列問題。將n個數字1, 2,n的所有排列按字典順序枚舉出猴23 11 31 232 1數的組合問題。從1,2,.,11中取出in個數,將所有組合按照字典順序列出。如n=3,m=2時,輸出:21 323小猴子第一天摘下若干桃子,當即

2、吃掉一半,又多吃一個.第二天早上又將剩下的桃子吃一 半,又多吃一個.以后每天早上吃前一天剩下的一半另一個.到第10天早上猴子想再吃時發(fā)現, 只剩下一個桃子了 .問第一天猴子共摘多少個桃子?fiuit(iiit begin.mt times)if(tiines=10) leturn begm;retiirn fruit(begin+ l)*2,times+1);有雌雄一對兔子,假定過兩個月便可繁殖雌雄各一的一對小兔子。問過n個月后共有多少 對兔子?一個人趕著鴨子去每個村莊賣,每經過一個村子賣去所趕鴨子的一半又一只。這樣他經 過了七個村子后還剩兩只鴨子,問他出發(fā)時共趕多少只鴨子?經過每個村子賣出多

3、少只鴨 子?duck(mt begin.mt times)if(tunes=7) retuin begin;retuin duck(begm4-1) *2. tmies+1); 8著名的菲波拉契(Fibonacci)數列,其第一項為0,第二項為1,從第三項開始,其每一項 都是前兩項的和。編程求出該數列前N項數據。iiit fbi(iiit i)if(i = 0) return 0;else return 1;return fbi(i-l) +fbi(i2);求兩個數的最大公約數。fgongyue(mt m,int n)/m要人J n,前面可以交換讓它實現if(n = 0) return m;f

4、gongyue(n,m%n);求兩個數的最小公倍數。最小公倍數等于2個數之積乘最好公約數m*iLzfgoiigyue(m.n)輸入一個數,求這個數的各位數字之和。add_eveiy_iium(iiit num)if(num10) return num;retiirn num% 10+add_every_num(num 10);角谷定理。輸入一個自然數,若為偶數,則把它除以2,若為奇數,則把它乘以3加1。 經過如此有限次運算后,總可以得到自然數值1。求經過多少次可得到自然數1。如:輸入22,輸出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1STEP=16#

5、iiiclude Hstdafx.hninclude Hstdio.hHiiit i = 1;iiit fc(int n)if(n = 1)printf(”d5); return i;else if(n%2 = 0)pnntfT%df); fc(n/2);1+;elsepnntf(”dfA); fc(n*3+l);i+;iiitargc, char* argv)int n.step;piintf(MPlease mput the scanff%dt&ii);step = fc(n); printf(MnStep = %dn,step); retuin 0;將十進制轉換為二進制。#iiiclud

6、e Hstdafx.hn#include Hstdio.hHmt fc(int num)if(num = 1)iprmtfCdnum); return 0;fc(nunV2); pmitf(”d=ium%2);iiitargc, char* argv)int num;printHplease mput the num:M);scanf(H%cl,&num);fc(num);return 0;計算 M=niax(a,b,c)/max(a+b,b,c)*max(a,b,b+c),其中 a, b, c 由鍵盤輸入。skip梯有N階,上樓可以一步上一階,也可以一次上二階。編一個程序,計算共有多少種 不

7、同的走法。return l+(fc(n-l)+fc(n-2)某人寫了 n封信和n個信封,如果所有的信都裝錯了信封。求所有的信都裝錯信封共有 多少種不同情況?給出一棵二叉樹的中序與后序排列。求出它的先序排列。求把一個整數n無序劃分成k份互不相同的正整數之和的方法總數。已知一個一維數組Al.No N50又已知一整數如能使數組A中任意幾個元素之 和等于M,則輸出YES,反之則為NO。要求找出具有下列性質的數的個數(包含輸入的自然數n):先輸入一個自然數n(n=500),然后對此自然數按照如下方法進行處理:.不作任何處理;.在它的左邊加上一個自然數,但該自然數不能超過原數首位數字的一半;.加上數后,繼

8、續(xù)按此規(guī)則進行處理,直到不能再加自然數為止.樣例:輸入:6滿足條件的數為6162612636136輸出:6自然數的拆分問題。給定自然數11,將其拆分成若干自然數的和。輸出所有解,每組解中 數字按從小到大排列。相同數字的不同排列算一組解。女口:3=1+1+13=1+23=3用遞歸的方法求N個數中最人的數及其位置。寫出折半查找的遞歸算法??焖倥判蚍āK伎碱}:1、數學寶塔,從最頂上走到最底層,每次只能走到卞一層的左邊或右邊的數字,求出使所 走到的所有數字之和為60的途徑。 TOC o 1-5 h z 6693637153289473241856397684152573578422、漢諾塔問題:設有三

9、個塔座,編號為1、2、2、漢諾塔問題:設有三個塔座,編號為1、2、,no開始時,n個圓盤按次序插放在z塔座上。(1)、每次只能移動一個圓盤;(2)、圓盤可以從任一個塔座上移到另一個塔座上;(3)、任何時刻都不能把一個較人的圓盤壓在較小的圓盤上。典型例題:設有n個數已經按從人到小的順序排列,現在從鍵盤上輸入n,判斷它是否在這n個數中, 如果存在則輸出“yes”否則輸出“no”。Program 1x4;Const n=30;Vai a:arrayl.nof integer;F,r,x.k: integer;Program search(xjop.bot:integer);Vai mid:integ

10、er;Beginif top=bot thenBeginMid=(top + bot) div 2;If x =anud then writeln(x:5,mid5/yes)else If xannd tlien search(xjopjiud-l)Else search(xjiiid+l j);Endelse Writeln(x:5/no,);End;BeginWritelii(c input n ge shif);For k:=l to n do read(ak);Read(x);F:=l;r:=n;Search(x.fj);End.Hanoi塔問題。j鬼(IT: procedure Ha

11、noi(n: integer;x,v,z: char);BeginIf n=l then writelii(x一5一z)Else beginHanoi(n-l,x,z,y);Wntelii(x;-n;z);Hanoi(n-l,y,x,z)End;End;BeginWriteCmput n/);Read(n);Haiioi(n;A,B,;C,)End. 有n個硬幣(n為偶數)正面朝上排成一排,每次將ml個硬幣翻成朝上為止。編程讓計 算機把翻硬幣的最簡過程及翻幣次數打印出來(用*代表正面,用0代表反面)?;拘问剑篋l=0;d2=l遞歸式:dn= (11-1)*( dn-l + dn-2)var

12、n: integer;fiinction d(n: integer): longint;begmcase n ofl:d:=0;2:d:=l;else d:=(n-1 )*(d(n-1 )+d(n-2);end;end;beginrepeatwrite(,n=,);readlii(n);if n0;writelii(ld=d(n);readhi;end.有一對雌雄兔子,假定兩個月便可以繁殖雌雄各一對兔子。問n各月后共有多少對兔子? 遞歸的三要素:遞歸的形式:Tn=Tn-l+Tn-2基本:Tl=l, T2=l結束條件:11個月progiain rabbit;var n:integer;fiinc

13、tion fa(n: mteger): integer;begmif n0;wnteiii(rs=s(n);readhi;end斐波那切數列遞 01: vai m,p: integer;Function fib(n: integer): integer;BeginIf n=0 then fib:=OElse if n=l then fib:=lElse fib:=fib(n-l)+fib(n-2);End;BeginRead(m);P:=fib(m);WritelnC fib(niinJ)=p)End.設有2-n個運動員要進行網球比賽。現要設計一個滿足以卞要求的比賽程表:、每個選手必須與其他m

14、l個選手各賽一次;、每個選手每天只能參賽一次;(3 )循環(huán)賽在nJ天內結束。program match;const k=3;n=8;vars: array 1.n, l.n of integer;ij,p:mteger;ju: boolean;procedure copyl(be,en:mteger;jug:boolean;q:integer);var mJ,ban: integer;begmif jug thenbeginif be=l thenbegin if sen,en=0 thenbegin copvl(be,en div 2,true,q div 2); copyl(en div

15、2)+l,en,false,q div 2);end;for m:=l to en dofor t:=l to en dosm+qj+q :=smjendelse begin if sbe+q-l,q=0 thenbegm copyl(be,be+(q div 2)-1,true,q div 2);copyl(be+(q div 2),eiLfalse.q div 2)for m:=be to en dofor t:=l to q do sm-rq.Hq :=smj endendelse beginif sbe.q=0 thenbegin copyl(be.be-r(q div 2)-ljin

16、e,q div 2); copyl(be+(q div 2),en,false,q div 2) end;for m:=be to en do for t:=l to q do sm-qj+q:=sm,t endend;begmfor i:=l to n dofoi j:=l to n do sij:=0;for i:=l to n dobegmsi,l:=i;if odd(i) then si+l,2:=sij else si-l,2:=si,l;end;copy 1(Ln div 2,tme,p div 2);copyl(n div 2)+l,n,false,p div 2);for i:

17、=l to n dobegmfbrj:=l to n do wnte(si,j;);wiitelii;end;end.以下是USACO contest 的題目,全是遞歸*BRONZE PROBLEMS*三道題目,從11到13 *Problem 11:谷倉的安保Traditional, 2005Farmer Jolin給谷倉安裝了一個新的安全系統(tǒng),并且要給牛群中的每一個奶牛安排一個有效 的密碼。一個有效的密碼由L(3 =L= 15)個小寫字母(來自傳統(tǒng)的拉丁字母集W.N)組成, 至少有一個元音(工e ?, -o,或者W),至少兩個輔音(除去元音以外的音節(jié)),并且有按字母 表順序出現的字母(例如,

18、0bc,是有效的,而Sc,不是)。給定一個期望長度L和C個小寫字母,寫一個程序,打印出所有的長度為L、能由這些字 母組成的有效密碼。密碼必須按字母表順序打印出來,一行一個。題目名稱:passwd輸入格式:*第一行:兩個由空格分開的整數,L和C*第二行:C個空格分開的小寫字母,密碼是由這個字母集中的字母來構建的。輸入樣例(文件passwd.m):46a t c i s w輸入詳細說明:由從給定的六個字母中選擇的、長度為4的密碼。輸出格式:*第一至?行:每一個輸出行包括一個長度為L個字符的密碼(沒有空格)。輸出行必須按照字 母順序排列。輸出樣例(文件passwd.out):acisacitaciw

19、 acstacsw actwaistaiswaitwastwcistciswcitwistw*Problem 12: ”跳房子11 Hal Burch, 2005奶牛們按不太傳統(tǒng)的方式玩起了小孩子們玩的”跳房子”游戲。奶牛們創(chuàng)造了一個5x5的、由與x,y軸平行的數字組成的直線型網格,而不是用來在里面跳 的、線性排列的、帶數字的方格。然后他們熟練地在網格中的數字中跳:向前跳、向后跳、向左跳、向右跳(從不斜過來跳),跳到網格中的另一個數字上。他們再這樣跳啊跳(按相同規(guī)則),跳到另外一個數字上(可能是已經跳過的數字)。一共在網格內跳過五次后,他們的跳躍構建了一個六位整數(可能以0開頭,例如 000201)。求出所有能被這樣創(chuàng)造出來的不同整數的總數。問題名稱:numgiid輸入格式:*第1到5行:這樣的網格,一行5個整數輸入樣例(文件numgiid.in):1111111111111111112 111111輸出格式:*第1行:能構建的不同整數的總數輸出樣例(文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論