說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732
全網(wǎng)監(jiān)測海量數(shù)據(jù)按需發(fā)布監(jiān)測預(yù)警
實(shí)時把握輿情動態(tài)精準(zhǔn)追溯信息源頭
遞歸調(diào)用是一種特殊的嵌套調(diào)用方式,這是一種解決方案,是一種邏輯思想,在網(wǎng)頁建設(shè)的過程當(dāng)中也經(jīng)??梢钥匆?,可是遞歸調(diào)用究竟要怎么使用呢?接下來我們就一起來好好的了解一下吧。
遞歸調(diào)用——遞歸調(diào)用的定義
遞歸調(diào)用就是在當(dāng)前的函數(shù)中調(diào)用當(dāng)前的函數(shù)并傳給相應(yīng)的參數(shù),這是一個動作,這一動作是層層進(jìn)行的,直到滿足一般情況的的時候,才停止遞歸調(diào)用,開始從最后一個遞歸調(diào)用返回。
fun(形參){
fun(參數(shù)值1)//第一次遞歸調(diào)用
fun(參數(shù)值2)//第二次遞歸調(diào)用
遞歸調(diào)用的使用方法
C語言中的遞歸
計算階乘的代碼
longfact(longn)
{
if(n==0||n==1)return1L;
elsereturnn*fact(n-1);
}
這個函數(shù)叫做fact,它自己調(diào)用自己,這個就是一個典型的遞歸調(diào)用,調(diào)用過程類似一個棧。
注:主調(diào)函數(shù)又是被調(diào)函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身。每調(diào)用一次就進(jìn)入新的一層。
intf(intx)
{
inty;
z=f(y);
returnz;
}這個函數(shù)是一個遞歸函數(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++語言中的遞歸
#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)典的一個案例
#include
intc=0;/*全局變量,搬動次數(shù)*/
voidmove(charx,intn,charz)
{/*第n個圓盤從塔座x搬到塔座z*/
printf(“第%i步:將%i號盤從%c移到%c\n”,++c,n,x,z);
}
voidhanoi(intn,charx,chary,charz)
{/*將塔座x上按直徑由小到大且自上而下編號為1至n的n個圓盤*/
/*按規(guī)則搬到塔座z上。y可用作輔助塔座*/
if(n==1)
move(x,1,z);/*將編號為1的圓盤從x移到z*/
else
{
hanoi(n-1,x,z,y);/*將x上編號為1至n-1的圓盤移到y(tǒng),z作輔助塔*/
move(x,n,z);/*將編號為n的圓盤從x移到z*/
hanoi(n-1,y,x,z);/*將y上編號為1至n-1的圓盤移到z,x作輔助塔*/
}
}
voidmain()
{
intn;
printf(“3個塔座為a、b、c,圓盤最初在a座,借助b座移到c座。請輸入圓盤數(shù):”);
scanf(“%d”,&n);
hanoi(n,’a’,’b’,’c’);
}
以上就是有關(guān)遞歸調(diào)用該如何使用的所有內(nèi)容,當(dāng)然在不同的語言編程當(dāng)中會有不同的使用方法具體的還是要根據(jù)實(shí)際情況來編寫程序,如果大家還想了解更多與之有關(guān)的內(nèi)容,歡迎關(guān)注我們文軍營銷的官網(wǎng)。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732