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;
}
相关推荐
数据科学小丫1 分钟前
算法:逻辑回归
算法·机器学习·逻辑回归
爱写代码的小朋友8 分钟前
基于多约束遗传算法的中小学排座位优化模型研究
linux·人工智能·算法
один but you11 分钟前
unorder_map 和unorder_set
算法·哈希算法·散列表
sheeta199823 分钟前
LeetCode 每日一题笔记 日期:2026.05.20 题目:2657. 找到前缀公共数组
笔记·算法·leetcode
Xin_ye1008636 分钟前
C# 零基础到精通教程 - 第八章:面向对象编程(进阶)——继承与多态
开发语言·c#
数智工坊40 分钟前
【UniT论文阅读】:用统一物理语言打通人类与人形机器人的知识壁垒
论文阅读·人工智能·深度学习·算法·机器人
梓䈑42 分钟前
【算法题攻略】模拟
c++·算法
Evand J1 小时前
【课题推荐与代码介绍】卡尔曼滤波器正反向估计算法原理与MATLAB实现
开发语言·算法·matlab
DFT计算杂谈1 小时前
VASP新手入门: IVDW 色散修正参数
linux·运维·服务器·python·算法
吃着火锅x唱着歌1 小时前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展