递归函数实例大全 1

递归函数实例大全 1常见的递归大全一 递归函数二 常见的递归 1 2 三 总结一 递归函数二 常见的递归 1 代码如下 示例 importnumpya pyplotasplti filterwarnin ignore importsslssl create default https context ssl


一、递归函数

函数func()直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。其实在c语言中,递归就是函数自己调用自己。


二、常见递归实例

1.求字符串的长度

代码如下:

#include 
        #include 
        #pragma warning (disable:4996) int strLen(char str[]); int main() { 
       /*求字符串长度*/ char str[] = "hello"; int n = strLen(str); printf("%d\n", n); system("pause"); return 0; } //求字符串长度(递归法) int strLen(char str[]) { 
       if (str[0] == '\0'){ 
       return 0; } return 1 + strLen(str + 1); } 

2.字符串的逆序显示

代码如下:

#include 
        #include 
        #pragma warning (disable:4996) int reverse_string(char *str); int main() { 
       /*输入字符串然后逆序输出*/ char str[100]; gets(str); reverse_tring(str); system("pause"); return 0; } //1.将字符串按反向排列输出(递归法) void reverse_tring(char *str) { 
       if (strlen(str)>0) { 
       printf("%c ", str[strlen(str) - 1]); str[strlen(str) - 1] = '\0'; reverse_tring(str); } } //2.简洁版--将字符串按反向排列输出(递归法) void reverse_String(char *str) { 
       if(*str) { 
       reverse_String(str+1); } printf("%c",*str); } 

3.计算一个整数的各个位的和

代码如下:

#include 
        #include 
        #pragma warning (disable:4996) int DigitSum(int n); int main() { 
       /*计算一个数的各个位的和*/ int n = 3456; int ret = DigitSum(n); printf("%d", ret); system("pause"); } //实现一个数的各个位之和(递归法) int DigitSum(int n) { 
       if (n <= 9){ 
       return n; } return n % 10 + DigitSum(n / 10); } 

4.实现n的k次方

代码如下:

#include 
        #include 
        #pragma warning (disable:4996) int exp(int n, int k); int main() { 
       int n = 4,k = 4; int ret=exp(n, k); printf("%d\n", ret); system("pause"); } //实现n的k次方(递归法) int exp(int n, int k) { 
       if (k <= 1){ 
       return n; } return n*exp(n, k - 1); } 

5.计算第n的斐波那契数

代码如下:

#include 
        #include 
        #pragma warning (disable:4996) int fib(int n); int main() { 
       int n = 0; printf("请输入一个数:"); scanf("%d",&n); int ret=fib(n); printf("%d\n", ret); system("pause"); return 0; } //求斐波那契数列(递归法) int fib(int n) { 
       if (n == 1){ 
       return 1; } if (n == 2){ 
       return 1; } return fib(n-1)+ fib(n-2); } 

三、总结

以上就是今天要讲的内容,本文仅仅简单介绍了最常用的用递归函数处理问题的一些算法,加深对递归思想的理解。也希望本文对各位老铁的学习有所帮助。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199625.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:35
下一篇 2026年3月20日 下午12:35


相关推荐

  • 简述SQL2008部署多实例集群(学习)

    简述SQL2008部署多实例集群(学习)

    2021年11月26日
    72
  • ubuntu find方法

    ubuntu find方法

    2021年5月14日
    123
  • web前端开发用什么工具_软件开发的基本步骤

    web前端开发用什么工具_软件开发的基本步骤大家还在使用Dreamweaver这样的弱智工具开发Web前端吗?或者使用VS系列笨重的工具在开发Web的前端吗?你已经Out了。我推荐大家使用WebStorm来做Web前端开发,高端、大气上档次。  相比Dreamweaver弱智的智能提示来看,WebStorm对html特别是HTML5和JS的智能提示简直堪称大神,很值得去使用。不过WebStorm不像Dreamweaver一样支

    2022年8月30日
    5
  • 服务器加网站防盗链,网站防盗链的设置方法介绍(适用于IIS和Apache)[通俗易懂]

    服务器加网站防盗链,网站防盗链的设置方法介绍(适用于IIS和Apache)[通俗易懂]这篇文章主要为大家详细介绍了网站防盗链的设置方法介绍(适用于IIS和Apache),具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。做网站的朋友一般都会遇到这样的一种情况,就是别人的网站经常会调用我们自己网站的图片或者文件,这无形之中会增加我们的服务器的压力,尤其是对于一些服务器带宽并不是十分富裕的网站来说就更是雪上加霜。因此我们需要学会设置防盗链来应对或者说来…

    2022年7月23日
    27
  • CMS垃圾收集器详解

    CMS垃圾收集器详解概述 CMS 垃圾收集器是一款优秀的老年代并发垃圾收集器 通过与用户线程并发执行的方式减少 GC 停顿的时间 本文主要聊一下 CMS 设计到的相关的数据结构 具体的执行过程 运行中会出现的异常情况 在 CMS 之前并行垃圾收集器通过下图方式进行 虽然 GC 阶段多线程并行执行单此时用户线程是完全暂停的 如果 GC 时间过长 将引发服务响应超时 调用接口超时等各类异常 而 CMS 垃圾收集器大部分时间 GC 线程与用户线程并发执行 只有在初始标记和重新标记阶段才暂停用户线程总体思路 当达到 GC 条件时 开始并发标记存

    2026年3月18日
    2
  • 数据库中间件详解

    数据库中间件详解数据库中间件详解原创 田守枝田守枝的技术博客 3 月 24 日 1 数据库拆分过程及挑战互联网当下的数据库拆分过程基本遵循的顺序是 垂直拆分 读写分离 分库分表 水平拆分 每个拆分过程都能解决业务上的一些问题 但同时也面临了一些挑战 1 1 垂直拆分对于一个刚上线的互联网项目来说 由于前期活跃用户数量并不多 并发量也相对较小 所以此时企业一般都会选择将所有数据存

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号