当前位置: 首页 > news >正文

数据结构算法篇--递归(c语言版)

目录

1.递归

1.1求阶乘:

1.2.斐波那契数

1.3. 求幂


1.递归

在C语言中,递归是一种函数调用自身的方法,用来解决一些具有重复性质的问题。例如,计算阶乘、斐波那契数列等问题都可以通过递归实现。

递归在书写的时候,有2个必要条件:

1.递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。

2. 每次递归调用之后 越来越接近这个限制条件。

在这里有个非常重要的分治思想,我概括一下就是从前到后,再从后到前,当然这里我概括的比较笼统,只可意会不可言传,实现递归的本质就是函数调用本身,并且要有明确的限制条件。

下面是一些简单的代码案例:

1.1求阶乘:

传入参数为10,输出为:3628800

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

1.2.斐波那契数

斐波那契数列是一个递增的数列,定义如下:F(n) = F(n-1) + F(n-2),其中 F(0) = 0F(1) = 1.

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

1.3. 求幂

计算 xn 次幂.:

#include <stdio.h>
int QIUMI(int x, int n) {if (n==0){return 1;}else{return x * QIUMI(x,n - 1);}
}
int main() {int x = 3;int a = 10;printf("%d\n", QIUMI(3,10));return 0;
}

在这里还是简单解释一下:函数参数为3,10,传入QIUMI(int x,int n),其计算过程是:

3*QIUMI(3,10)

QIUMI(3,10)=3*QIUMI(3,9);

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,省略

QIUMI(3,1)=3*QIUMI(3,0);

QIUMI(3,0)=1;

最后累乘一下就可以了。


http://www.mrgr.cn/news/66555.html

相关文章:

  • Linux 经典面试八股文
  • 如何在 CentOS 7.9 上安装 Docker
  • Linux系统编程——线程概述、线程控制和线程私有数据
  • Android 依赖统一配置管理(Version Catalogs)
  • 从无到有:模拟 STL 栈和队列的抽象构建艺术
  • 电脑开机显示无信号然后黑屏怎么办?
  • Linux 编程:高实时性场景下的内核线程调度与网络包发送优化
  • Kubernetes 中的存储管理:PV、PVC 与 StorageClass 详解
  • Python批量合并多个PDF
  • Java 运算符和表达式
  • 译码方案译码错误
  • D-FINE:在DETRs模型中将回归任务重新定义为细粒度分布优化
  • C语言 | Leetcode C语言题解之第540题有序数组中的单一元素
  • dom4j实现xml转map,xml转json字符串
  • 前端八股文(二)CSS 持续更新中。。。
  • ffmpeg视频解码
  • 看看你的电脑可以跑 AI 模型吗?
  • 基于图像处理的硬币个数识别系统
  • Rust 跨平台构建与部署实战:构建并部署跨平台应用
  • 网关 Spring Cloud Gateway
  • Hive操作库、操作表及数据仓库的简单介绍
  • 受控制组件与非受控组件
  • 基于Matlab的语音识别
  • 苍穹外卖 各状态的订单数量统计
  • 【拥抱AI】如何让软件开发在保证数据安全的同时更加智能与高效?
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载