




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12講函數(shù)舉例例1:求最大公約數(shù)要求:編寫計(jì)算最大公約數(shù)的函數(shù),在主程序中,輸入兩個(gè)正整數(shù),調(diào)用該函數(shù)并輸出最大公約數(shù)。解題思路:求最大公約數(shù)有多種方法,本講介紹兩種方法,分別是窮舉法和歐幾里得法(輾轉(zhuǎn)相除法)。例1:求最大公約數(shù)方法1:窮舉法思路:兩個(gè)整數(shù)a,b的最大公約數(shù)不能比兩者中小的那個(gè)大。先找出a,b中較小的那個(gè)數(shù)設(shè)為m,從m開(kāi)始嘗試看它是不是能被a,b整除,不能整除m就減1,再嘗試,第一個(gè)能被a,b整除的就是最大公約數(shù)。大家可以隨意找兩個(gè)整數(shù),按這個(gè)方法推演一下。#include<stdio.h>intmain(){inta,b;scanf("%d%d",&a,&b);printf("%d",gcd(a,b));return0;}intgcd(inta,intb){intm;m=a<b?a:b;while(a%m!=0||b%m!=0)m--;returnm;}求最大公約數(shù):窮舉法例1:求最大公約數(shù)方法2:歐幾里得法(輾轉(zhuǎn)相除法)思路:設(shè)r=amodb表示a除以b的余數(shù),若r!=0,則將b作為新的a,r作為新的b,即gcd(a,b)=gcd(b,r),重復(fù)計(jì)算r=amodb,直到r=0為止,此時(shí)b為所求的最大公約數(shù)。大家可以隨意找兩個(gè)整數(shù),按這個(gè)方法推演一下。intgcd(inta,intb){intr;while(r=a%b)//while((r=a%b)!=0){a=b;b=r;}returnb;}求最大公約數(shù):歐幾里得法例2:判斷質(zhì)數(shù)要求:函數(shù)實(shí)現(xiàn)判斷一個(gè)數(shù)是不是質(zhì)數(shù)。主程序中輸入一個(gè)大于1的正整數(shù),調(diào)用判斷質(zhì)數(shù)函數(shù),并輸出結(jié)果。例2的完整程序#include<stdio.h>intmain(){intx,flag;scanf("%d",&x);if(x<=1){printf("非法輸入\n");return0;}flag=prime(x);if(flag==1)printf("%d是質(zhì)數(shù)\n",x);elseprintf(“%d不是質(zhì)數(shù)\n",x);return0;}intprime(intx){inti;for(i=2;i<x;i++)if(x%i==0)return0;return1;}例3:斐波那契(Fibonacci)數(shù)列要求:采用非遞歸函數(shù)的形式實(shí)現(xiàn)斐波那契數(shù)列。斐波那契(Fibonacci)數(shù)列:0,1,1,2,3,5,8,13…數(shù)列第1項(xiàng)值為0,第2項(xiàng)值為1,后面每項(xiàng)值是前面兩個(gè)值之和。斐波那契數(shù)列非遞歸實(shí)現(xiàn)函數(shù)Fib(n)計(jì)算出斐波那契數(shù)列的第n項(xiàng)的值。intFib(intn){intf;//f是f1和f2后面的值intf1=0;//f1表示第1項(xiàng)intf2=1;//f2表示第2項(xiàng)if(1==n)return0;if(2==n)return1;for(inti=3;i<=n;i++){f=f1+f2;f1=f2;//往后推,f1取代f2f2=f;//f2取代f}returnf;}例4:漢諾塔(Hanoi)問(wèn)題漢諾塔問(wèn)題是計(jì)算機(jī)科學(xué)中的經(jīng)典問(wèn)題,需要用遞歸的方法解決。古代有一個(gè)梵塔,塔內(nèi)有3個(gè)座A、B、C,開(kāi)始時(shí)A座上有64個(gè)大小不等的盤子,大的在下,小的在上。有一個(gè)和尚想把這64個(gè)盤子從A座移到C座,但規(guī)定每次只允許移動(dòng)一個(gè)盤,且在移動(dòng)過(guò)程中在3個(gè)座上都始終保持大盤在下,小盤在上。移動(dòng)過(guò)程中可以利用B座。要求編程輸出移動(dòng)盤子的步驟。ABC漢諾塔問(wèn)題解題思路可以這樣想:假如能有辦法將上面63個(gè)盤子從一個(gè)座移到另一座。那么,問(wèn)題就解決了。此時(shí)只需這樣做:(1)將63個(gè)盤子從A座移到B座(2)將1個(gè)盤子(最底下的、最大的盤子)從A座移到C座(3)再將63個(gè)盤子從B座移到C座63個(gè)盤子怎么從一個(gè)座移到另一座?假如能有辦法將上面62個(gè)盤子從一個(gè)座移到另一座。那么,問(wèn)題就解決了。62個(gè)盤子怎么移動(dòng)?如法炮制……1個(gè)盤子直接從一個(gè)座移到另一個(gè)座漢諾塔程序voidhanoi(intn,chara,charb,charc)//表示n個(gè)盤子,從a移到c,借助于b{if(n==1)move(a,c);else{hanoi(n-1,a,c,b);move(a,c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦物加工與貴金屬回收技術(shù)考核試卷
- 手繪基礎(chǔ)考試試題及答案
- 高一醫(yī)德考試試題及答案
- 電廠班長(zhǎng)考試試題及答案
- 公務(wù)員職員面試題及答案
- 材料研發(fā)考試試題及答案
- 防水試題(答案)
- 2025遼寧地礦集團(tuán)總部部長(zhǎng)崗位競(jìng)(招)聘4人筆試參考題庫(kù)附帶答案詳解
- 《女媧造人》課件
- 《撬重物的竅門》課的追問(wèn)教學(xué)
- 2025年重慶市中考物理模擬試卷(一)(含解析)
- 《服務(wù)營(yíng)銷雙主動(dòng)》課件
- 公司法公章管理制度
- 演出經(jīng)紀(jì)人員資格備考資料2025
- 成都交通投資集團(tuán)有限公司招聘考試真題2024
- (二模)嘉興市2025年高三教學(xué)測(cè)試語(yǔ)文試卷(含答案)
- 湖北省宜昌二中2025年高考化學(xué)考前最后一卷預(yù)測(cè)卷含解析
- 醫(yī)院不良事件上報(bào)制度
- MTK安全架構(gòu)研究-全面剖析
- 餐飲食堂消防安全培訓(xùn)
- 10S505 柔性接口給水管道支墩
評(píng)論
0/150
提交評(píng)論