本文目錄一覽:
c語言中,什麼是函數的遞歸?
所謂遞歸,說的簡單點,就是函數自己調用自己,然後在某個特定條件下。結束這種自我調用。
如果不給予這個結束條件,就成了無限死循環了。這樣這個遞歸也就毫無意義了。
如下面問題
1 1 2 3 5 8 13 21 ……..n
分析可以看出, i 表示第幾個數, n 表示該數的值
當i = 1 時, n = 1;
當i = 2 時, n = 1;
當i = 3 時 n = i1 + i2;
當i = 4 時 n = i2 + i3
所以可以寫個函數
int fun(int n) // 這裡的n代表第幾個數
{
if(1 == n || 2 == n) // 第一個數
{
return 1;
}
else
{
return fun(n – 1) + fun(n – 2); // 這裡就是自己調用自己,形成循環自我調用。
}
}
註: 以上代碼只是用來演示遞歸,不包含錯誤校驗。
在實際生產過程中。該代碼不夠健壯。
如此,就完成了遞歸。你就可以求得第n個數了。
何時考慮使用遞歸。
當你分析一個問題的時候,發現這個問題,是一個自我循環時,而且這個自我循環到一個給定值,就可以終止的時候,你就快要考慮遞歸了。
講一下c語言中遞歸函數的使用方法
遞歸函數有三點要求:
1,遞歸的終止點,即遞歸函數的出口
2,不斷的遞歸調用自身
3,遞歸函數主體內容,即遞歸函數需要做的事情
ps:3一般可以放在2的前面或者後面,一般1放最前面。另外,2和3可以根據不同的需要合併,比如,有時候遞歸函數的主體就是返回調用下層函數所得到的結果。
具體例子如下:
void fun(int n)
{
if(n=0) return; //1 這是遞歸的終點,即出口
fun(n-1); //2、遞歸函數自身的調用
coutnendl; //3 遞歸函數的主體內容
}
2,3合併的情況
int fun(int n)
{
if(n=0) return 0;
return fun(n-1)+fun(n-2); //2 3合併
}
C語言中的遞歸是什麼意思
程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種演算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。
遞歸策略只需少量的程序就可描述出解題過程所需要的多次重複計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。
一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
擴展資料:
遞歸的應用
1、數據的定義是按遞歸定義的。(Fibonacci函數)
2、問題解法按遞歸演算法實現。這類問題雖則本身沒有明顯的遞歸結構,但用遞歸求解比迭代求解更簡單,如Hanoi問題。
3、數據的結構形式是按遞歸定義的。
遞歸的缺點
遞歸演算法解題相對常用的演算法如普通循環等,運行效率較低。因此,應該盡量避免使用遞歸,除非沒有更好的演算法或者某種特定情況,遞歸更為適合的時候。在遞歸調用的過程當中系統為每一層的返回點、局部量等開闢了棧來存儲。遞歸次數過多容易造成棧溢出等。
參考資料來源:百度百科-遞歸
c語言遞歸函數
遞歸函數:
編程語言中,函數Func(Type a,……)直接或間接調用函數本身,則該函數稱為遞歸函數。遞歸函數不能定義為內聯函數。
在數學上,關於遞歸函數的定義如下:對於某一函數f(x),其定義域是集合A,那麼若對於A集合中的某一個值X0,其函數值f(x0)由f(f(x0))決定,那麼就稱f(x)為遞歸函數。
函數介紹:
在數理邏輯和計算機科學中,遞歸函數或μ-遞歸函數是一類從自然數到自然數的函數,它是在某種直覺意義上是”可計算的” 。事實上,在可計算性理論中證明了遞歸函數精確的是圖靈機的可計算函數。遞歸函數有關於原始遞歸函數,並且它們的歸納定義(見下)建造在原始遞歸函數之上。但是,不是所有遞歸函數都是原始遞歸函數 — 最著名的這種函數是阿克曼函數。
其他等價的函數類是λ-遞歸函數和馬爾可夫演算法可計算的函數。
例子:
//代碼1
void func()
{
//…
if(…)
func();
else
//…
}
條件:
一個含直接或間接調用本函數語句的函數被稱之為遞歸函數,在上面的例子中能夠看出,它必須滿足以下兩個條件:
1) 在每一次調用自己時,必須是(在某種意義上)更接近於解;
2) 必須有一個終止處理或計算的準則。
梵塔的遞歸函數:
//C
void hanoi(int n,char x,char y,char z)
{
if(n==1)
move(x,1,z);
else
{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/276029.html