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;
}
相关推荐
GoAI11 小时前
DeepSeek Harness Memory (一)主流记忆插件总结
后端·算法·面试
Pniubi12 小时前
力扣54.螺旋矩阵
算法·leetcode·矩阵
choumou_M14 小时前
算法_1:由浅入深学习快速排序QuickSort
学习·算法·排序算法
Coder_Shenshen15 小时前
罗克韦尔ACD工程归档离线变量树解析
算法·c#
心仪久了会沦陷16 小时前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
小此方17 小时前
[算法实战论:动态规划]背包问题概念,01不满背包问题,01满背包问题,背包问题的滚动数组空间优化
算法·动态规划
悠仁さん18 小时前
【C++】哈希表
c++·算法·散列表
地平线开发者18 小时前
点云算法整理与常用计算模块:从数据到模型,再到工程与量化
算法·自动驾驶
寂寞的船20 小时前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene