c語言遞迴系列總結

2021-10-17 08:44:26 字數 2708 閱讀 9962

遞迴實戰

斐波拉契數列

漢諾塔輸出乙個數字的每一位

倒序儲存字串

遞迴簡而言之就是函式自己呼叫自己 如圖所示

但是遞迴並不是簡簡單單的自己呼叫自己的過程 它分為傳遞回歸,傳遞就是橙色箭頭 回歸則是黑色箭頭 這就是遞迴

以 計算階乘為例,假設我們輸入6 計算6的階乘為例

#define _crt_secure_no_warnings

#include

intfactorial

(int x)

//遞迴體函式

return x *

(factorial

(x -1)

);}int

main()

具體實現過程如下 我們可以很清楚看到 先傳遞 在歸一 就是遞迴

在傳遞的過程將問題化簡 歸一的過程將化簡的問題解決

(1). 問題的定義是按遞迴定義的(fibonacci函式,階乘,…);

(2). 問題的解法是遞迴的(有些問題只能使用遞迴方法來解決,例如,漢諾塔問題,…);

(3). 資料結構是遞迴的(鍊錶、樹等的操作,包括樹的遍歷,樹的深度,…)

#define _crt_secure_no_warnings

#include

intfactorial

(int x)

// 遞迴體

return x *

(factorial

(x -1)

);//就x!轉換成x*((x-1)!) 達到傳遞化簡的目的

}int

main()

#define _crt_secure_no_warnings

#include

intmain()

printf

("%d"

, sum)

;return0;

}

斐波拉契數列 即0、1、1、2、3、5、8、13、21、34、………這樣一串數字

遞迴解法通過數學函式定義可輕鬆得到 他的遞迴體

是當n>1時fib(n-2)+fib(n-1)

遞迴出口就是n=0 返回0,n=1,返回1

#define _crt_secure_no_warnings

#include

intfib

(int x)

//第0個元素為0 第乙個元素為1

else

if(x ==1)

//出口

else

return

fib(x -2)

+fib

(x -1)

;//迴圈體

}int

main()

#define _crt_secure_no_warnings

#include

intfib

(int x)

return k;

}int

main()

漢諾塔簡單了解

如 輸入 1234 輸出 1 2 3 4

這裡用取對數的方法得到有多少位 依次除以位數的10次方 即可

#define _crt_secure_no_warnings

#include

#include

void

elect

(int x)

}while(1

);printf

("\n \n");

}void

elect2

(int x)

}int

main()

#define _crt_secure_no_warnings

#include

void

elect

(int x)

printf

("%d "

, x %10)

;//出口

}int

main()

將引數字串中的字元反向排列,不是逆序列印

#define _crt_secure_no_warnings

#include

#include

#include

#include

void

reverse_string

(char arr)

*(arr + sz -1)

= tmp;

}int

main()

C語言精要總結 指標系列(二)

此文為指標系列第二篇 c語言精要總結 指標系列 一 c語言精要總結 指標系列 二 前面提到過指標的解引用運算,除此之外,指標還能進行部分算數運算 關係運算 指標能進行的有意義的算術運算包括加減法運算,但不包括乘除運算。並且運算存在諸多限制。加法運算 指標加法運算只適合指標與整數,不能用在指標與指標。...

c語言 遞迴

遞迴 電影 盜夢空間 定義 直接或者間接的呼叫自身的函式。兩個特性 存在限制條件,當滿足條件時遞迴不再繼續 每次遞迴之後越來越接近限制條件 缺點 涉及執行開銷,引數必須壓到堆疊,為區域性變數分配記憶體空間。1.將二進位制整數轉換為字元 1 引數值除以10 2 列印quotient當前值的各位數字 3...

遞迴與尾遞迴 (C語言)

在電腦科學領域中,遞迴式通過遞迴函式來實現的。程式呼叫自身的程式設計技巧稱為遞迴 recursion 乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算...