個人粗淺理解:
迴圈:不斷重複進行某一運算、操作。
迭代:一般用於得到近似目標值,反覆迴圈同一運算式(函式),並且總是把前一 次運算結果反代會運算式進行下一次運算。如迭代開方:
遞推:高中學過遞推數列,由前一項可以推出後一項,是從前面的已知結果推出未知結果。
遞迴:一個運算(操作),可以透過不斷呼叫本身的運算形式,往往需要透過前一次的結果來得到當前運算的結果,因而,程式執行時,總是先一次次地「回溯」前一次的結果(回溯過程中這些結果是未知的,直到回溯到初值令回溯終止,再層層遞推回來得到當前要求的值)
/*階乘函式n! 遞迴*/
int fac(int n)
{
long f;
if(n==(1||0)) f=1;
else f=n*fac(n-1);
return f;
}
/*階乘函式n! 遞推*/
int fac_2(int n)
int i;
long f=1;
if(n==0) f=1;
else for(i=1;i<=n;i++)
f=f*i;
上面階乘函式的例子中,記階乘函式fac(n)
遞推:fac(n)=fac(n-1)*n
遞迴:fac(n)=fac(n-1)*n
其實是一樣的,不過遞迴含有呼叫前一次運算的過程(就是呼叫這個函式本身的形式),而遞推則是把具體遞推的形式寫出來,兩者形式有些不同而已。
回溯:前面已經提到,是遞迴時經歷的一個過程。
總結
遞推:從初值出發反覆進行某一運算得到所 需結果。
遞迴:從所需結果出發不斷回溯前一運算直 到回到初值再遞推得到所需結果。
迭代:不斷對前一舊值運算得到新值直到達 到精度。
個人粗淺理解:
迴圈:不斷重複進行某一運算、操作。
迭代:一般用於得到近似目標值,反覆迴圈同一運算式(函式),並且總是把前一 次運算結果反代會運算式進行下一次運算。如迭代開方:
遞推:高中學過遞推數列,由前一項可以推出後一項,是從前面的已知結果推出未知結果。
遞迴:一個運算(操作),可以透過不斷呼叫本身的運算形式,往往需要透過前一次的結果來得到當前運算的結果,因而,程式執行時,總是先一次次地「回溯」前一次的結果(回溯過程中這些結果是未知的,直到回溯到初值令回溯終止,再層層遞推回來得到當前要求的值)
/*階乘函式n! 遞迴*/
int fac(int n)
{
long f;
if(n==(1||0)) f=1;
else f=n*fac(n-1);
return f;
}
/*階乘函式n! 遞推*/
int fac_2(int n)
{
int i;
long f=1;
if(n==0) f=1;
else for(i=1;i<=n;i++)
f=f*i;
return f;
}
上面階乘函式的例子中,記階乘函式fac(n)
遞推:fac(n)=fac(n-1)*n
遞迴:fac(n)=fac(n-1)*n
其實是一樣的,不過遞迴含有呼叫前一次運算的過程(就是呼叫這個函式本身的形式),而遞推則是把具體遞推的形式寫出來,兩者形式有些不同而已。
回溯:前面已經提到,是遞迴時經歷的一個過程。
總結
遞推:從初值出發反覆進行某一運算得到所 需結果。
遞迴:從所需結果出發不斷回溯前一運算直 到回到初值再遞推得到所需結果。
迭代:不斷對前一舊值運算得到新值直到達 到精度。