如題,輸入的參數(shù)是7,調(diào)用fun(7),進(jìn)入fun函數(shù),if判斷,此時x=7,if語句的condition為真,繼續(xù)調(diào)用fun函數(shù)fun(3)(7/2取整為3),進(jìn)入fun函數(shù),if判斷,此時x=3,if語句的condition為假,執(zhí)行if語句后的輸出語句,輸出3(此時x=3),返回上一層的fun函數(shù)調(diào)用(即是fun(7),因?yàn)榈谝淮握{(diào)用時,還留這一句輸出語句沒有執(zhí)行),輸出7(此次fun函數(shù)調(diào)用x=7),主函數(shù)結(jié)束。函數(shù)執(zhí)行的解析:程序的執(zhí)行從主函數(shù)開始,一條一條語句執(zhí)行,語句存放在一定的數(shù)據(jù)空間里,這段空間就是代碼段,一般情況下程序是按代碼的地址順序執(zhí)行的,但是在函數(shù)調(diào)用,程序會暫停當(dāng)前的代碼的執(zhí)行,把下一條應(yīng)該執(zhí)行的代碼的地址放在另一個存儲空間里(其實(shí)是壓進(jìn)棧了),而轉(zhuǎn)去執(zhí)行調(diào)用的函數(shù)代碼,執(zhí)行完所有函數(shù)應(yīng)該被執(zhí)行代碼(是所有哦,當(dāng)然分支語句里的一些語句可以不執(zhí)行的),程序會把壓進(jìn)棧的指令地址取出來,繼續(xù)執(zhí)行下去,直到住程序結(jié)束。遞歸函數(shù)是一般函數(shù)用分支或者循環(huán)控制多次重復(fù)調(diào)用函數(shù)的情況。
目前成都創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、永清網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
c函數(shù)是一個獨(dú)立的程序段,它執(zhí)行具體的、明確的任務(wù)
特點(diǎn):
一個函數(shù)只能返回一個值
一個程序可以有一個或多個函數(shù)
函數(shù)可以嵌套調(diào)用,但不能在一個函數(shù)中定義另一個函數(shù)
無論函數(shù)是否有參數(shù),一定要有括號
函數(shù)在定義或使用前應(yīng)在main() 函數(shù)中進(jìn)行聲明
你是說調(diào)用自己的時候嗎?
不需要!
因?yàn)楹瘮?shù)的實(shí)現(xiàn)在函數(shù)定義的下邊。編譯器已經(jīng)能夠認(rèn)識它了
看看我寫的這段代碼,運(yùn)行環(huán)境為VC6。0
/**********************************************
歌德巴赫猜想
哥德巴赫猜想有兩個內(nèi)容,
第一部分叫做奇數(shù)的猜想,
第二部分叫做偶數(shù)的猜想。
奇數(shù)的猜想指出,
任何一個大于 等于7的奇數(shù)都是三個素?cái)?shù)的和。
偶數(shù)的猜想是說,
大于等于4的偶數(shù)一定是兩個素?cái)?shù)的和
***********************************************/
#include stdio.h
int main ()
{
int n,i,j;
scanf ("%d",n); //輸入一個整數(shù)
printf ("%d=",n);
if (n1) {printf ("3+"); n-=3;} //如果是奇數(shù),找出一個為3,轉(zhuǎn)化為偶數(shù)
for (i=2;in;i++)
{
for (j=2;j*j=i;j++) //判斷i是否為素?cái)?shù)
if (i%j==0) break;
if (j*j=i) continue;
for (j=2;j*j=n-i;j++) //判斷n-i是否為素?cái)?shù)
if ((n-i)%j==0) break;
if (j*j=n-i) continue;
break;
}
printf ("%d+%d\n",i,n-i);
return 1;
}
遞推算法是一種用若干步可重復(fù)運(yùn)算來描述復(fù)雜問題的方法.遞推是序列計(jì)算機(jī)中的一種常用算法。它是按照一定的規(guī)律來計(jì)算序列中的每個項(xiàng),通常是通過計(jì)算機(jī)前面的一些項(xiàng)來得出序列中的指定象的值。其思想是把一個復(fù)雜的龐大的計(jì)算過程轉(zhuǎn)化為簡單過程的多次重復(fù),該算法利用了計(jì)算機(jī)速度快和不知疲倦的機(jī)器特點(diǎn)。
【例】
植樹節(jié)那天,有五位同學(xué)參加了植樹活動,他們完成植樹的棵樹都不相同。問第一位同學(xué)植了多少棵時,他指著旁邊的第二位同學(xué)說比他多植了兩棵;追問第二位同學(xué),他又說比第三位同學(xué)多植了兩棵;... 如此,都說比另一位同學(xué)多植兩棵。最后問到第五位同學(xué)時,他說自己植了10棵。到底第一位同學(xué)植了多少棵樹?
分析:設(shè)第一位同學(xué)植樹的棵樹為a1,欲求a1,需從第五位同學(xué)植樹的棵數(shù)a5入手,根據(jù)“多兩棵”這個規(guī)律,按照一定順序逐步進(jìn)行推算:
(1) a5=10;
(2) a4=a5+2=12;
(3) a3=a4+2=14;
(4) a2=a3+2=16;
(5) a1=a2+2=18;
使用這種方法,
第一步先例舉一些關(guān)系式,找到規(guī)律,或者說找到通項(xiàng)公式
第二步找到結(jié)束程序的條件值
找到后直接用
if(結(jié)束條件)
return 結(jié)束時的值
else 通項(xiàng)公式
return 最后的返回值
把這個直接填到被調(diào)函數(shù)里面就可以了