C语言——函数递归实现

目录

  • 题1:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示
  • 题2:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示
  • 题3:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示
  • 题4:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示
  • 题5:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示
  • 题6:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示
  • 题7:
    • 题目描述
    • 代码编写(C语言版本)
    • 结果演示


:经典之所以被称为经典,是因为在大部分的题目中都能够找到它们的影子,经典题的解题思路已潜移默化的渗透到每道题中,只有我们掌握好经典题的解题思路,我想我们解题能力也定会更上一层楼。
:这篇博客主要是对一些经典的递归题目进行讲解,让你对递归题不再恐惧!!
C语言——函数递归实现_第1张图片

题1:

题目描述

☀️☀️☀️递归方式实现打印一个整数的每一位

代码编写(C语言版本)

void print(int n) {
	if (n > 9) {
	print(n / 10);
	 }
	printf("%d ", n % 10);
}

结果演示

C语言——函数递归实现_第2张图片

题2:

题目描述

☀️☀️☀️ 递归求n的阶乘(不考虑溢出的问题)

代码编写(C语言版本)

int mul(int n) {
	if (n <= 1) {
		return 1;
	}
	return n * mul(n - 1);
}

结果演示

C语言——函数递归实现_第3张图片

题3:

题目描述

☀️☀️☀️ strlen的模拟(递归实现)

代码编写(C语言版本)

int my_strlen(char* arr) {
	if (*arr == '\0')
		return 0;
	else return 1 + my_strlen(arr + 1);
}

结果演示

C语言——函数递归实现_第4张图片

题4:

题目描述

☀️☀️☀️编写一个函数 reverse_string(char * string,int left,int right)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。

代码编写(C语言版本)

void reverse_string(char* arr,int left,int right) {
	if (left >= right) {
		return arr;
	}
	char h = arr[left];
	arr[left] = arr[right];
	arr[right] = h;
	reverse_string(arr, left + 1, right - 1);
}

结果演示

C语言——函数递归实现_第5张图片

题5:

题目描述

☀️☀️☀️写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
输入:1729,输出:19

代码编写(C语言版本)

int DigitSum(int n) {
	if (n > 9) {
		return n % 10 + DigitSum(n / 10);
	}
}

结果演示

C语言——函数递归实现_第6张图片

题6:

题目描述

☀️☀️☀️编写一个函数实现n的k次方,使用递归实现

代码编写(C语言版本)

int my_pow(n, k) {
	if (k <= 1) {
		return n;
	}
	return n * my_pow(n,k - 1);
}

结果演示

C语言——函数递归实现_第7张图片

题7:

题目描述

☀️☀️☀️递归和非递归分别实现求第n个斐波那契数
例如:
输入:5 输出:5
输入:10, 输出:55
输入:2, 输出:1

代码编写(C语言版本)

int dig(int n) {
	if (n <=2) {
		return 1;
	}
	return dig(n - 1) + dig(n - 2);
}

结果演示

C语言——函数递归实现_第8张图片

你可能感兴趣的:(c语言)