1) 遞歸中一定有迭代,但是迭代中不一定有遞歸,大部分可以相互轉(zhuǎn)換囱井。
2) 能用迭代的不用遞歸,遞歸調(diào)用函數(shù),浪費(fèi)空間,并且遞歸太深容易造成堆棧的溢出./*相對(duì)*/
代碼實(shí)現(xiàn):
// 迭代驹尼,重復(fù)一定的算法,達(dá)到想要的目的庞呕。數(shù)學(xué)上二分法新翎,牛頓法是很好的迭代例子functioniteration(x){
varsum=1;for(x;x>=1;x--)
{
sum=sum*x;
}
}
// 遞歸,自身調(diào)用自身的迭代就是遞歸住练。// 但是正式定義好像不是這么說的地啰。這只是我個(gè)人理解functionrecursion(x){
if(x>1)
{
returnx*recursion(x-1);}
else{return1;}
}
任何一個(gè)迭代的例子都有它的遞歸表示法,反之亦然讲逛。