C语言基础(14)-递归
一. 递归的定义
函数可以调用自己,这就叫函数的递归。
先序递归和后序递归
#include <stdio.h> void test(int n); void test1(int n); void main() { int a = 10; test1(a); system("pause"); } void test(int n) { if (n > 0){ // 递归终止条件,递归一定要有终止条件 printf("n=%d\n",n); // 先序递归 输出结果:10 9 8 7 6 5 4 3 2 1 test1(n-1); } } void test1(int n) { if (n > 0) { test1(n-1); printf("n=%d\n",n); // 后序递归 输出结果:1 2 3 4 5 6 7 8 9 10 } }
例1:求第n个人的岁数
有n个人排成一队,问第n个人多少岁,他回答比前面一个人大2岁,再问前面一个人多少岁,他回答比前面一个人大2岁,一直问到最后问第一个人,他回答10岁
#include <stdio.h> int getAge(int n); void main() { int a = 8; printf("第%d个人的岁数是:%d\n",a,getAge(a)); system("pause"); } int getAge(int n) { int age; if (n == 1) { age = 10; } else{ age = getAge(n - 1) + 2; } return age; }
例2:将十进制数转化为二进制数
#include <stdio.h> int getBinary(int n); void main() { int a = 5; getBinary(a); system("pause"); } //将十进制数转换为二进制数 int getBinary(int n) { int i = n % 2; if (n >= 2) { getBinary(n / 2); } printf("%d",i); }
例3:斐波那契数列
#include <stdio.h> int fib(int n); void main() { for (int i = 0; i < 11; i++) { printf("第%d项的值为%d\n", i, fib(i)); } system("pause"); } // 斐波那契数列 int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; if (n > 1) return fib(n - 1) + fib(n - 2); }
例4:计算一个字符串的长度
#include <stdio.h> int mystrlen(const char *p, int n); void main() { char *a = "hello123"; printf("当前字符串的长度为:%d\n",mystrlen(a,0)); system("pause"); } int mystrlen(const char *p, int n) { if (p[n]) { // 这里判断是否到达字符串末尾的0 return mystrlen(p,n+1); }else { return n; } }
例5:求n个自然数的和
// 求n个自然数的和 int mysum(int n) { if (n == 0) { // 递归终止条件 return 0; } return mysum(n - 1) + n; }
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库