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;
}
相关推荐
兮山与26 分钟前
算法24.0
算法
晓北斗NorSnow38 分钟前
机器学习核心算法与学习资源解析
学习·算法·机器学习
偶尔的鼠标人1 小时前
SqlSugar查询字符串转成Int的问题
c#·sqlsugar
我不是程序猿儿1 小时前
【C#】WinForms 控件句柄与 UI 刷新时机
开发语言·ui·c#
hans汉斯2 小时前
【计算机科学与应用】基于BERT与DeepSeek大模型的智能舆论监控系统设计
大数据·人工智能·深度学习·算法·自然语言处理·bert·去噪
多喝开水少熬夜2 小时前
损失函数系列:focal-Dice-vgg
图像处理·python·算法·大模型·llm
立志成为大牛的小牛3 小时前
数据结构——三十七、关键路径(王道408)
数据结构·笔记·程序人生·考研·算法
ytttr8733 小时前
基于MATLAB的Relief算法特征权重选择实现
算法
Freshman小白4 小时前
python算法打包为docker镜像(边缘端api服务)
python·算法·docker
mit6.8244 小时前
[VT-Refine] Simulation | Fine-Tuning | docker/run.sh
算法