C语言——函数递归实现

简介: C语言——函数递归实现

@TOC


🎈:经典之所以被称为经典,是因为在大部分的题目中都能够找到它们的影子,经典题的解题思路已潜移默化的渗透到每道题中,只有我们掌握好经典题的解题思路,我想我们解题能力也定会更上一层楼。
🎈:这篇博客主要是对一些经典的递归题目进行讲解,让你对递归题不再恐惧!!
                                      ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/1233bc67611e44adb5f5591a466f027c.png)






题1:

题目描述

:sunny::sunny::sunny:递归方式实现打印一个整数的每一位

代码编写(C语言版本)

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

结果演示

在这里插入图片描述

题2:

题目描述

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

代码编写(C语言版本)

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

结果演示

在这里插入图片描述

题3:

题目描述

:sunny::sunny::sunny: strlen的模拟(递归实现)

代码编写(C语言版本)

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

结果演示

在这里插入图片描述

题4:

题目描述

:sunny::sunny::sunny:编写一个函数 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);
}

结果演示

在这里插入图片描述

题5:

题目描述

:sunny::sunny::sunny:写一个递归函数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);
    }
}

结果演示

在这里插入图片描述

题6:

题目描述

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

代码编写(C语言版本)

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

结果演示

在这里插入图片描述

题7:

题目描述

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

代码编写(C语言版本)

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

结果演示

在这里插入图片描述

目录
相关文章
|
4天前
|
C语言
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
18 0
|
4天前
|
C语言
C语言—字符函数与字符串函数(字符问题变简单的关键之技)
C语言—字符函数与字符串函数(字符问题变简单的关键之技)
6 0
|
23小时前
|
C语言 C++
C语言进阶⑭(内存函数_以字节操作)momcpy+mommove+memcmp+memset
C语言进阶⑭(内存函数_以字节操作)momcpy+mommove+memcmp+memset
5 0
|
4天前
|
C语言
C语言——函数递归
C语言——函数递归
7 0
|
4天前
|
C语言
C语言—函数(大化小方式的心脏)
C语言—函数(大化小方式的心脏)
4 0
|
6天前
|
C语言
每天一道C语言编程(递归:斐波那契数,母牛的故事)
每天一道C语言编程(递归:斐波那契数,母牛的故事)
5 0
|
6天前
|
存储 编译器 C语言
C语言:字符函数 & 字符串函数 & 内存函数
C语言:字符函数 & 字符串函数 & 内存函数
16 2
|
6天前
|
C语言
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
11 0
|
6天前
|
缓存 安全 编译器
【C 言专栏】C 语言函数的高效编程技巧
【5月更文挑战第1天】本文探讨了C语言中函数的高效编程技巧,包括函数的定义与作用(如代码复用和提高可读性)、设计原则(单一职责和接口简洁)、参数传递方式(值传递、指针传递和引用传递)、返回值管理、调用约定、嵌套与递归调用,以及函数优化技巧和常见错误避免。掌握这些技巧能提升C语言代码的质量和效率。
【C 言专栏】C 语言函数的高效编程技巧
|
6天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)