最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言遞歸在實踐題目中應(yīng)用詳解

 更新時間:2022年05月12日 11:05:33   作者:珠江上  
遞歸是C語言中非常重要的知識點,其中的大事化小等思想對初學C語言的小伙伴來說不是很友好,因此我整理了遞歸的經(jīng)典題目并向外拓展,給你全面的介紹,重新認識遞歸

遞歸知識點

遞歸概念:程序調(diào)用自身的編程技巧稱為遞歸( recursion)。 遞歸做為一種算法在程序設(shè)計語言中廣泛應(yīng)用。 一個過程或函數(shù)在其定義或說明中有直接或間接 調(diào)用自身的 一種方法,它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解, 遞歸策略 只需少量的程序就可描述出解題過程所需要的多次重復(fù)計算,大大地減少了程序的代碼量。

通俗理解就是:函數(shù)自己調(diào)用自己

遞歸的主要思考方式就是大事化小

遞歸的兩個必要條件

1.存在限制條件,當滿足這個限制條件的時候,遞歸便不再繼續(xù)

2.每次遞歸調(diào)用之后越來越接近這個限制條件

(滿足以上必要條件的不一定是遞歸,但不滿足條件的一定不是遞歸)

題目

第一題

接收一個整型數(shù)值,按照順序打印它的每一位

輸入:1234 輸出:1 2 3 4

來看看函數(shù)內(nèi)部:

#include <stdio.h>
void print(int n)
{
	if (n > 9)
	{
		print(n / 10);
	}
	printf("%d ", n % 10);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	print(n);
	return 0;
}

第二題

求 n 的階乘

進入函數(shù)內(nèi)部:

#include <stdio.h>
int factorial(int n)
{
	if (n <= 1)
		return 1;
	else
		return n * factorial(n - 1);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = factorial(n);
	printf("%d\n", ret);
	return 0;
}

第三題

用遞歸的方法求字符串長度

#include <stdio.h>
int my_strlen(char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}
int main()
{
	char arr[] = "hello";
	int ret = my_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

第四題

用遞歸求第n個斐波那契數(shù)(不考慮溢出)

進入函數(shù)內(nèi)部:

#include <stdio.h>
int Fib(int n)
{
	if (n <= 2)
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d\n", ret);
	return 0;
}

第五題

進入函數(shù)內(nèi)部:

#include <stdio.h>
int Dig(int n)
{
	if (n > 9)
		return Dig(n / 10) + n % 10;
	else
		return n;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Dig(n);
	printf("%d\n", ret);
	return 0;
}

第六題

用遞歸實現(xiàn) n 的 k 次方

進入函數(shù)內(nèi)部:

#include <stdio.h>
double Pow(int n, int k)
{
	if (k > 0)
		return n * Pow(n, k - 1);
	else if (k == 0)
		return 1;
	else
		return 1.0 / Pow(n, -k);
}
int main()
{
	int n = 0;
	int k = 0;
	scanf("%d %d", &n, &k);
	double ret = Pow(n, k);
	printf("%lf\n", ret);
	return 0;
}

第七題

小樂樂上課需要走 n 階臺階,

所以每次可以選擇走一階或者走兩階,那么他一共有多少種走法?

進入函數(shù)內(nèi)部:

#include <stdio.h>
int jump(int n)
{
	if (n <= 2)
		return n;
	else
		return jump(n - 1) + jump(n - 2);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret=jump(n);
	printf("%d\n", ret);
	return 0;
}

到此這篇關(guān)于C語言遞歸在實踐題目中應(yīng)用詳解的文章就介紹到這了,更多相關(guān)C語言遞歸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于C語言 文件讀寫 feof 函數(shù)

    關(guān)于C語言 文件讀寫 feof 函數(shù)

    這篇文章主要給大家分享的是關(guān)于C語言文件讀寫 feof 函數(shù) ,feof 是 C 語言標準庫函數(shù),其功能是檢測文件結(jié)束符,如果文件結(jié)束,則返回非 0 值,否則返回 0,感興趣的小伙伴請跟小編一起來看看下面文章的內(nèi)容吧
    2021-10-10
  • 一文搞懂c++中的std::move函數(shù)

    一文搞懂c++中的std::move函數(shù)

    這篇文章主要介紹了c++中的std::move函數(shù),在探討c++11中的Move函數(shù)前,先介紹兩個概念(左值和右值),對c++?std::move函數(shù)相關(guān)知識感興趣的朋友一起看看吧
    2022-07-07
  • JetBrains?CLion永久激活超詳細教程(最新激活方法)

    JetBrains?CLion永久激活超詳細教程(最新激活方法)

    JetBrains?Clion?是一款專為?C/C++?開發(fā)所設(shè)計的跨平臺?IDE,本文適用?JetBrains?CLion?v2019.3/3.1/3.2/3.3?永久激活,附破解補丁和激活碼,可以永久激活?Windows、MAC、Linux?下的?CLion,下面給大家分享JetBrains?CLion永久激活超詳細教程,感興趣的朋友一起看看吧
    2023-01-01
  • 老生常談C++ explicit關(guān)鍵字

    老生常談C++ explicit關(guān)鍵字

    這篇文章主要介紹了C++ explicit關(guān)鍵字,explicit關(guān)鍵字只需用于類內(nèi)的單參數(shù)構(gòu)造函數(shù)前面,由于無參數(shù)的構(gòu)造函數(shù)和多參數(shù)的構(gòu)造函數(shù)總是顯式調(diào)用,這種情況在構(gòu)造函數(shù)前加explicit無意義,需要的朋友可以參考下
    2023-03-03
  • C++類與對象深入之引用與內(nèi)聯(lián)函數(shù)與auto關(guān)鍵字及for循環(huán)詳解

    C++類與對象深入之引用與內(nèi)聯(lián)函數(shù)與auto關(guān)鍵字及for循環(huán)詳解

    朋友們好,這篇播客我們繼續(xù)C++的初階學習,現(xiàn)在對一些C++的入門知識做了些總結(jié),整理出來一篇博客供我們一起復(fù)習和學習,如果文章中有理解不當?shù)牡胤?還希望朋友們在評論區(qū)指出,我們相互學習,共同進步
    2022-06-06
  • Qt實現(xiàn)小功能之圓形進度條的方法詳解

    Qt實現(xiàn)小功能之圓形進度條的方法詳解

    在Qt自帶的控件中,只有垂直進度條、水平進度條兩種。在平時做頁面開發(fā)時,有些時候會用到圓形進度條,比如說:下載某個文件的下載進度。本文就來實現(xiàn)一個圓形進度條,需要的可以參考一下
    2022-10-10
  • 深入uCOS中全局變量的使用詳解

    深入uCOS中全局變量的使用詳解

    本篇文章是對uCOS中全局變量的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺談C++為什么非要引入那幾種類型轉(zhuǎn)換

    淺談C++為什么非要引入那幾種類型轉(zhuǎn)換

    這篇文章主要介紹了C++為什么非要引入那幾種類型轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C/C++實現(xiàn)快速排序算法的兩種方式實例

    C/C++實現(xiàn)快速排序算法的兩種方式實例

    快速排序是一種采用分治思想,在實踐中通常運行較快一種排序算法,這篇文章主要給大家介紹了關(guān)于C/C++實現(xiàn)快速排序的兩種方式的相關(guān)資料,文中給出了詳細的示例代碼,需要的朋友可以參考下
    2021-08-08
  • 利用Matlab實現(xiàn)陰影柱狀圖的繪制

    利用Matlab實現(xiàn)陰影柱狀圖的繪制

    陰影柱狀圖繪制的代碼MATHWORKS上也有,不過是生成圖片后,識別圖像上不同顏色塊并直接修改像素生成陰影線。這樣的生成方式不可逆且自由度較低,所以本文為大家?guī)淼氖且粋€直接畫線條填充的硬畫版本,希望有所幫助
    2022-09-09

最新評論

镇原县| 诸暨市| 水富县| 大冶市| 德保县| 贺兰县| 巴彦县| 滦南县| 秀山| 汪清县| 讷河市| 巴林右旗| 海宁市| 凌海市| 顺义区| 鹤庆县| 靖安县| 朝阳县| 高邑县| 九龙坡区| 石城县| 阿尔山市| 西丰县| 柯坪县| 德清县| 石阡县| 珲春市| 喀喇| 水城县| 金华市| 淳化县| 友谊县| 略阳县| 依安县| 湛江市| 兴化市| 广南县| 康保县| 临泉县| 安龙县| 边坝县|