本文目錄一覽:
講一下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語言函數遞歸的問題(入門的)
else
{
DisplayNames(cNameArray+1);
printf(“%s\n”,*cNameArray); //這句要是上移到DisplayNames()之前,才是正序
}
總結:
先遍歷,後輸出,則是逆序
先輸出,再遍歷剩餘的,則是正序
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/159976.html