中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言遞歸在實踐題目中如何應用

發布時間:2022-05-12 13:51:15 來源:億速云 閱讀:130 作者:iii 欄目:開發技術

本篇內容主要講解“C語言遞歸在實踐題目中如何應用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言遞歸在實踐題目中如何應用”吧!

遞歸知識點

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

通俗理解就是:函數自己調用自己

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

遞歸的兩個必要條件

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

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

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

題目

第一題

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

輸入:1234 輸出:1 2 3 4

C語言遞歸在實踐題目中如何應用

來看看函數內部:

C語言遞歸在實踐題目中如何應用

#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 的階乘

C語言遞歸在實踐題目中如何應用

進入函數內部:

C語言遞歸在實踐題目中如何應用

#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;
}

第三題

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

C語言遞歸在實踐題目中如何應用

#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個斐波那契數(不考慮溢出)

C語言遞歸在實踐題目中如何應用

進入函數內部:

C語言遞歸在實踐題目中如何應用

#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;
}

第五題

C語言遞歸在實踐題目中如何應用

C語言遞歸在實踐題目中如何應用

進入函數內部:

C語言遞歸在實踐題目中如何應用

#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;
}

第六題

用遞歸實現 n 的 k 次方

C語言遞歸在實踐題目中如何應用

進入函數內部:

C語言遞歸在實踐題目中如何應用

#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 階臺階,

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

C語言遞歸在實踐題目中如何應用

進入函數內部:

C語言遞歸在實踐題目中如何應用

#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;
}

到此,相信大家對“C語言遞歸在實踐題目中如何應用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梅河口市| 江西省| 福州市| 珠海市| 宜黄县| 宁安市| 若尔盖县| 泸定县| 高安市| 无为县| 榆中县| 柏乡县| 惠来县| 苗栗县| 建湖县| 芒康县| 班戈县| 图木舒克市| 正宁县| 曲沃县| 太仆寺旗| 乐清市| 库尔勒市| 吴旗县| 霍城县| 鲁甸县| 通山县| 电白县| 苏尼特右旗| 珠海市| 泗水县| 庆元县| 子长县| 利辛县| 中宁县| 衡阳市| 七台河市| 曲松县| 合肥市| 泽普县| 通化县|