說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請(qǐng)撥打電話 400 685 0732
全網(wǎng)監(jiān)測(cè)海量數(shù)據(jù)按需發(fā)布監(jiān)測(cè)預(yù)警
實(shí)時(shí)把握輿情動(dòng)態(tài)精準(zhǔn)追溯信息源頭
遞歸調(diào)用是一種特殊的嵌套調(diào)用方式,這是一種解決方案,是一種邏輯思想,在網(wǎng)頁(yè)建設(shè)的過程當(dāng)中也經(jīng)??梢钥匆姡墒沁f歸調(diào)用究竟要怎么使用呢?接下來我們就一起來好好的了解一下吧。
遞歸調(diào)用——遞歸調(diào)用的定義
遞歸調(diào)用就是在當(dāng)前的函數(shù)中調(diào)用當(dāng)前的函數(shù)并傳給相應(yīng)的參數(shù),這是一個(gè)動(dòng)作,這一動(dòng)作是層層進(jìn)行的,直到滿足一般情況的的時(shí)候,才停止遞歸調(diào)用,開始從最后一個(gè)遞歸調(diào)用返回。
fun(形參){
fun(參數(shù)值1)//第一次遞歸調(diào)用
fun(參數(shù)值2)//第二次遞歸調(diào)用
遞歸調(diào)用的使用方法
C語(yǔ)言中的遞歸
計(jì)算階乘的代碼
longfact(longn)
{
if(n==0||n==1)return1L;
elsereturnn*fact(n-1);
}
這個(gè)函數(shù)叫做fact,它自己調(diào)用自己,這個(gè)就是一個(gè)典型的遞歸調(diào)用,調(diào)用過程類似一個(gè)棧。
注:主調(diào)函數(shù)又是被調(diào)函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身。每調(diào)用一次就進(jìn)入新的一層。
intf(intx)
{
inty;
z=f(y);
returnz;
}這個(gè)函數(shù)是一個(gè)遞歸函數(shù)。但是運(yùn)行該函數(shù)將無休止地調(diào)用其自身,這當(dāng)然是不正確的。為了防止遞歸調(diào)用無終止地進(jìn)行,必須在函數(shù)內(nèi)有終止遞歸調(diào)用的手段。常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調(diào)用,然后逐層返回。下面舉例說明遞歸調(diào)用的執(zhí)行過程。
注:鏈表在某種程度上就是遞歸的調(diào)用.
Pascal中的遞歸
const
z=10000;
var
a:array[0..z+1]ofinteger;
n,j,i,k:longint;
begin
readln(n);write(n,’!=’);
begin
a[1]:=1;
fori:=1tondo
begin
forj:=1tozdo
a[j]:=a[j]*i;
fork:=1tozdo
begin
a[k+1]:=a[k+1]+a[k]div10;
a[k]:=a[k]mod10;
end;
end;
i:=z;k:=0;
repeat
ifa[i]<>0thenk:=1;
i:=i-1;
untilk=1;
k:=0;
forj:=i+1downto1do
write(a[j]);
end;
writeln;
end.
c++語(yǔ)言中的遞歸
#include
usingnamespacestd;
intfac(intn)
{
ints=1;
for(inti=n;i>0;i–)
{
if(s<=s*i)s=s*i;
else
{
cout<<“overintarea”<<ENDL;<p>
return0;
};
}
returns;
}
voidmain()
JA寫的遞歸調(diào)用
publicclassTestDg{
publicstaticvoidmain(String[]args){
System.out.println(method(5));
}
publicstaticintmethod(intn){
if(n==1)
return1;
else
returnn*method(n-1);
}
}
軟件遞歸調(diào)用里面最經(jīng)典的一個(gè)案例
#include
intc=0;/*全局變量,搬動(dòng)次數(shù)*/
voidmove(charx,intn,charz)
{/*第n個(gè)圓盤從塔座x搬到塔座z*/
printf(“第%i步:將%i號(hào)盤從%c移到%c\n”,++c,n,x,z);
}
voidhanoi(intn,charx,chary,charz)
{/*將塔座x上按直徑由小到大且自上而下編號(hào)為1至n的n個(gè)圓盤*/
/*按規(guī)則搬到塔座z上。y可用作輔助塔座*/
if(n==1)
move(x,1,z);/*將編號(hào)為1的圓盤從x移到z*/
else
{
hanoi(n-1,x,z,y);/*將x上編號(hào)為1至n-1的圓盤移到y(tǒng),z作輔助塔*/
move(x,n,z);/*將編號(hào)為n的圓盤從x移到z*/
hanoi(n-1,y,x,z);/*將y上編號(hào)為1至n-1的圓盤移到z,x作輔助塔*/
}
}
voidmain()
{
intn;
printf(“3個(gè)塔座為a、b、c,圓盤最初在a座,借助b座移到c座。請(qǐng)輸入圓盤數(shù):”);
scanf(“%d”,&n);
hanoi(n,’a’,’b’,’c’);
}
以上就是有關(guān)遞歸調(diào)用該如何使用的所有內(nèi)容,當(dāng)然在不同的語(yǔ)言編程當(dāng)中會(huì)有不同的使用方法具體的還是要根據(jù)實(shí)際情況來編寫程序,如果大家還想了解更多與之有關(guān)的內(nèi)容,歡迎關(guān)注我們文軍營(yíng)銷的官網(wǎng)。
推薦閱讀
遞歸函數(shù)詳解 遞歸函數(shù)如何使用 | 文軍營(yíng)銷一個(gè)含直接或間接調(diào)用本函數(shù)語(yǔ)句的函數(shù)被稱之為遞歸函數(shù),在上面的例子中能夠看出,它必須滿足以下兩個(gè)條件: 1)在每一次調(diào)用自己時(shí),必須是(在某種意義上)更接近于解; 2)必須有一個(gè)終止處理或計(jì)算的準(zhǔn)則。 例如: 梵塔的遞歸函數(shù) //C voidhanoi(intn,charx,chary,charz) { if(n==1) move(x,1,z); else...
說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請(qǐng)撥打電話 400 685 0732