常见的递归函数大全

  • 一、递归函数
  • 二、常见递归实例
    • 1.求字符串的长度
    • 2.字符串的逆序显示
    • 3.计算一个整数的各个位的和
    • 4.实现n的k次方
    • 5.计算第n的斐波那契数
  • 三、总结

一、递归函数

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


二、常见递归实例

1.求字符串的长度

代码如下:

#include<stdio.h>
#include<string.h>
#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<stdio.h>
#include<string.h>
#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<stdio.h>
#include<string.h>
#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<stdio.h>
#include<string.h>
#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<stdio.h>
#include<string.h>
#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);
}

三、总结

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

递归函数实例大全 1相关推荐

  1. c语言220程序,《C语言程序实例大全》原代码220例

    <C语言程序实例大全>,一共220个. 找了很多地方都不全,最后在CSDN上用积分下载了这个,C语言初学者可以参考. 下载地址: http://doc.xuehai.net/tp09770 ...

  2. java编程50实例_java编程实例大全及详解谜底(50例).doc

    java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...

  3. python递归函数讲解_Python递归函数实例讲解

    Python递归函数实例 1.打开Python开发工具IDLE,新建'递归.py'文件,并写代码如下: def digui(n): if n == 0 : print ('') return prin ...

  4. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...

    使用javascript实现雪花飘落的效果 看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈 ...

  5. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

    技术非常多,样例非常多.仅仅好慢慢学,慢慢实践!!如今学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQ ...

  6. bk3432开发的应用实例_《Javaweb开发实例大全》限时免费啦!

    Java Web,是用Java技术来解决相关web互联网领域的技术栈.web包括:web服务端和web客户端两部分.Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的 ...

  7. python递归函数的思想_Python递归函数实例讲解

    Python递归函数实例 1.打开Python开发工具IDLE,新建'递归.py'文件,并写代码如下: def digui(n): if n == 0 : print ('') return prin ...

  8. 水晶报表官方实例大全

    水晶报表官方实例大全 在本文档中,你将获得由技术支持创建的示例报表列表.这些示例报表示范了各种各样的报表创建技巧.目的是示范概念.这些示例报表被完全用文献证明,并且不被技术支持所支援.文档包含了每种应 ...

  9. 《HTML5 开发实例大全》——1.26 使用鼠标光标拖动网页中的文字

    本节书摘来自异步社区<HTML5 开发实例大全>一书中的第1章,第1.26节,作者: 张明星 更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.26 使用鼠标光 ...

最新文章

  1. python渐变颜色表_python – 具有固定颜色渐变的np.histogram2D
  2. Excel教程(12) - 数学和三角函数
  3. CSS浏览器兼容问题集-第四部分
  4. mysql 案例~mysql主从复制延迟处理(2)
  5. 利用memcache来保存tomcat的session会话
  6. 【疑难杂症】AiO Runtimes 微软常用运行库合集工具一键式安装全部 Windows 系统必备常用运行库合集,解决各种.dll文件缺失问题
  7. LoadRunner 11安装手册
  8. 词法分析器的java代码_利用Java实现简单的词法分析器实例代码
  9. java爬虫爬取京东_java爬虫练习|爬取京东上的手机商品数据
  10. 渗透火狐浏览器设置代理
  11. 内盘外盘哪个比较好?如何分析
  12. unable to load Private Key 6572:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\
  13. Bagging和Boosting 策略及其区别
  14. winform框架:winform老矣,尚能饭否
  15. 人工智能算法对发明创造的知识产权保护
  16. 3d生活馆迪万3d打印机产品
  17. 无线蓝牙模块的体积会影响传输距离吗?
  18. LeetCode-Algorithms-[Easy]LCP 02. 分式化简
  19. c语言字符是英文还是中文,c语言中判断中文还是英文字符
  20. C# 从零开始写 SharpDx 应用 笔刷

热门文章

  1. 【答学员问】面试谈的很好,为什么最后都没下offer
  2. mfc中弹出wpf对话框_CAA二次开发-创建对话框
  3. win10 安裝 redis
  4. Error resolving template “xxx“, template might not exist or might错误记录
  5. mysql中int最大多少,MySQL中int最大值深入讲解
  6. 如何在1微秒内检测数以万计的ip段
  7. 前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)...
  8. dw1510_{已解决}大家有没有DELL DW1510,BCM94322HM8L最新的win10驱动?dell 1510
  9. speedoffice(Excel)文字居中怎么设置
  10. 2021高考成绩分数查询生成器,高考成绩单生成器