遞迴函式例項大全
一、遞迴函式
函式func()直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下:對於某一函式f(x),其定義域是集合A,那麼若對於A集合中的某一個值X0,其函式值f(x0)由f(f(x0))決定,那麼就稱f(x)為遞迴函式。其實在c語言中,遞迴就是函式自己呼叫自己。二、常見遞迴例項
1.求字串的長度
程式碼如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int strLen(char str[]);
int main()
{
/*求字串長度*/
char str[] = "hello";
int n = strLen(str);
printf("%d\n", n);
system("pause");
return 0;
}
//求字串長度(遞迴法)
int strLen(char str[])
{
if (str[0] == '\0'){
return 0;
}
return 1 + strLen(str + 1);
}
2.字串的逆序顯示
程式碼如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int reverse_string(char *str);
int main()
{
/*輸入字串然後逆序輸出*/
char str[100];
gets(str);
reverse_tring(str);
system("pause");
return 0;
}
//將字串按反向排列輸出(遞迴法)
void reverse_tring(char *str)
{
if (strlen(str)>0)
{
printf("%c ", str[strlen(str) - 1]);
str[strlen(str) - 1] = '\0';
reverse_tring(str);
}
}
3.計算一個整數的各個位的和
程式碼如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int DigitSum(int n);
int main()
{
/*計算一個數的各個位的和*/
int n = 3456;
int ret = DigitSum(n);
printf("%d", ret);
system("pause");
}
//實現一個數的各個位之和(遞迴法)
int DigitSum(int n)
{
if (n <= 9){
return n;
}
return n % 10 + DigitSum(n / 10);
}
4.實現n的k次方
程式碼如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int exp(int n, int k);
int main()
{
int n = 4,k = 4;
int ret=exp(n, k);
printf("%d\n", ret);
system("pause");
}
//實現n的k次方(遞迴法)
int exp(int n, int k)
{
if (k <= 1){
return n;
}
return n*exp(n, k - 1);
}
5.計算第n的斐波那契數
程式碼如下:
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996)
int fib(int n);
int main()
{
int n = 0;
printf("請輸入一個數:");
scanf("%d",&n);
int ret=fib(n);
printf("%d\n", ret);
system("pause");
return 0;
}
//求斐波那契數列(遞迴法)
int fib(int n)
{
if (n == 1){
return 1;
}
if (n == 2){
return 1;
}
return fib(n-1)+ fib(n-2);
}
三、總結
以上就是今天要講的內容,本文僅僅簡單介紹了最常用的用遞迴函式處理問題的一些演算法,加深對遞迴思想的理解。也希望本文對各位老鐵的學習有所幫助。相關文章
- 遞迴函式遞迴函式
- 函式表示式–遞迴函式遞迴
- 函式的遞迴函式遞迴
- JavaScript 函式遞迴JavaScript函式遞迴
- php遞迴函式PHP遞迴函式
- 函式之遞迴函式遞迴
- MYSQL: 表表示式(CTE)實現遞迴例項MySql遞迴
- 遞迴中Return例項分析遞迴
- 函式遞迴與生成式函式遞迴
- 遞迴函式的理解遞迴函式
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- Python 函式進階-遞迴函式Python函式遞迴
- JS函式表示式——函式遞迴、閉包JS函式遞迴
- javascript遞迴例項程式碼演示JavaScript遞迴
- Python簡單函式迴圈綜合例項Python函式
- 1.5.6 python遞迴函式Python遞迴函式
- 13.0、python遞迴函式Python遞迴函式
- day 17 – 1 遞迴函式遞迴函式
- 遞迴函式-樹形列表遞迴函式
- 初學 PHP 函式的遞迴PHP函式遞迴
- C#語言函式遞迴C#函式遞迴
- GO語言————6.6 遞迴函式Go遞迴函式
- 直觀理解(尾)遞迴函式遞迴函式
- vfork函式例項函式
- 遞迴函式,可變引數列表遞迴函式
- JavaScript 中匿名函式的遞迴呼叫JavaScript函式遞迴
- 測開之函式進階· 第1篇《遞迴函式》函式遞迴
- SQL with as 的用法 以及遞迴函式的寫法 遞迴層次查詢SQL遞迴函式
- 課時22:函式:遞迴是神馬函式遞迴
- bilibiliclass10and11_函式遞迴函式遞迴
- 假如我們把函式都改成遞迴...函式遞迴
- sql 函式實現三種父子遞迴SQL函式遞迴
- PHP函式處理函式例項詳解PHP函式
- 【函式】ORACLE函式大全函式Oracle
- hasOwnProperty()函式程式碼例項函式
- pipelined函式例項函式
- 遞迴、三元表示式、生成式(列表,字典)、匿名函式遞迴函式
- 從漢諾塔遊戲理解python遞迴函式遊戲Python遞迴函式