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

C语言:递归

递归简单来说就是函数自己调用自己。

特点:一般代码比较简洁,没有出口。

例子1:用一个函数计算阶乘

#include<stdio.h>//不用递归
int fac(int n)
{int val = 1;for (int i = 1; i <=n;i++){val *= i;}return val;
}//用递归
int fac1(int n)
{if (n == 1){return 1;}return n * fac1(n - 1);
}int main()
{printf("%d\n", fac(5));printf("%d\n", fac1(5));return 0;
}

例子2:斐波那契值

#include<stdio.h>//1 2 3 4 5 6 7  8   从第三个数开始,它的值等于它前两项的和
//1 1 2 3 5 8 13 21
//用递归
int fibonacci(int n)
{if (n == 1 || 2 == n){return 1;}return fibonacci(n - 2) + fibonacci(n - 1);
}//循环法
int fibo(int n)
{if (1 == n || 2 == n){return 1;}int v1 = 1;int v2 = 1;int v3;for (int i=3;i<=n;i++){v3 = v1 + v2;v1 = v2;v2 = v3;}return v3;
}int main()
{printf("%d\n", fibo(40));printf("%d\n", fibonacci(40));return 0;
}

例子3:倒序打印

#include<stdio.h>void print(char* str)//abcd dcba倒序打印
{if (*str == '\0'){return;}print(str + 1);        //printf("%c", *str);此为正打印printf("%c", *str);    //print(str + 1);    abcd abcd
}int main()
{print("abcd");return 0;
}

http://www.lryc.cn/news/429674.html

相关文章:

  • 自动化测试框架pytest+allure+requests
  • Python 笔记 numpy.ndarray切片
  • 一、HTML5知识点精讲
  • 【杂乱算法】前缀和与差分
  • Arduino调试ESP32常见问题 exit status 1
  • “决胜面试:高频题目与算法策略一览”
  • Node-RED的安装
  • java中的Collections
  • linux Qt QkeyEvent及驱动键盘按键捕获
  • 【GH】【EXCEL】P6: Shapes
  • google浏览器chrome用户数据(拓展程序,书签等)丢失问题
  • 数据结构——链式队列和循环队列
  • 数据库死锁解决方法,学费了吗?
  • API网关之Apache ShenYu
  • ECMA Script 6
  • 如何在不破产的情况下训练AI模型
  • 常用开发组件Docker部署保姆级教程
  • MySql高级视频笔记
  • 二十二、状态模式
  • Spark环境搭建-Local
  • 使用FModel提取黑神话悟空的资产
  • MYSQL定时任务使用手册
  • SAP 预扣税配置步骤文档【Withholding Tax]
  • Ubuntu ssh配置
  • Spring Boot OAuth2.0应用
  • Java | Leetcode Java题解之第363题矩形区域不超过K的最大数值和
  • AI作画提示词(Prompts)工程:技巧与最佳实践
  • leetcode滑动窗口问题
  • QT 控件使用案例
  • 【MySQL 10】表的内外连接 (带思维导图)