C语言:递归函数(新增)

目录

递归是什么?

具体概念:

原理图解

案例一斐波那契数

案例二1~9的阶乘


递归是什么?

可以看作一个循环,函数里面调用自己,

理解:函数运行判断后,再次调用该函数,但是上次的运行还未结束,任然需要执行,所以暂挂等最新的函数结束后,在执行后面程序。

运用大事化小的思想解决问题。

具体概念:

一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。

递归函数成功执行需满足以下两个条件:

1必须有一个明显的结束条件。

2必须有一个趋近于结束条件的趋势。

原理图解

cs 复制代码
#include <stdio.h>
void test (int n)
{
  printf("%d \n", n);
  if (n > 1)
  {
    test(n - 1);
  }
  printf("%d \n", n);
}
int main()
{
  test(3);
  return 0;
}

输出结果

321123

案例一斐波那契数

1,1,2,3,5,8,13... 这是一个斐波那契数列,它的规则是第1个和第2个斐波那契数是1,从第3个数开始,每个斐波那契数都是前两个数之和。编写程序,输入一个整数,计算它的斐波那契数?

cs 复制代码
#include <stdio.h>
int fib(int a)
{
	if(a == 1 || a == 2)
	{
		return 1;
	}
	return fib(a-1)+fib(a-2);
}
int main()
{
	int n;
	printf("请输入一个数:\n");
	scanf("%d",&n);
	printf("%d的斐波那契数列的结果是%d\n",n,fib(n));
	return 0;
}

案例二1~9的阶乘

cs 复制代码
#include <stdio.h>
int fib(int a)
{
	if(a == 1){
		return 1;
	}
	return a * fib(a-1);
}
int main()
{
	int n;
	scanf("%d",&n);
	printf("%d的阶乘是%d\n",n,fib(n));
	return 0;
}
相关推荐
Voyager_421 分钟前
图像处理踩坑:浮点数误差导致的缩放尺寸异常与解决办法
数据结构·图像处理·人工智能·python·算法
c#上位机24 分钟前
wpf之ToggleButton控件
c#·wpf
文艺倾年27 分钟前
【八股消消乐】手撕分布式协议和算法(基础篇)
分布式·算法
万岳科技系统开发1 小时前
从源码优化外卖配送系统:算法调度、智能推荐与数据分析应用
算法·数据挖掘·数据分析
信奥卷王4 小时前
[GESP202503 五级] 原根判断
java·数据结构·算法
兮山与4 小时前
算法4.0
算法
nju_spy4 小时前
力扣每日一题(二)任务安排问题 + 区间变换问题 + 排列组合数学推式子
算法·leetcode·二分查找·贪心·排列组合·容斥原理·最大堆
初听于你4 小时前
高频面试题解析:算法到数据库全攻略
数据库·算法
翟天保Steven4 小时前
ITK-基于Mattes互信息的二维多模态配准算法
算法
代码对我眨眼睛4 小时前
226. 翻转二叉树 LeetCode 热题 HOT 100
算法·leetcode·职场和发展