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;
}
相关推荐
椒颜皮皮虾27 分钟前
TensorRtSharp:在 C# 世界中释放 GPU 推理的极致性能
c#·tensorrt
行止9527 分钟前
WinForms 彻底隐藏 滚动条的终极解决方案
c#
无限进步_30 分钟前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
星辞树39 分钟前
揭秘阿里 DIN:当深度学习遇上“千物千面”
算法
刘立军40 分钟前
如何选择FAISS的索引类型
人工智能·算法·架构
小芒果_011 小时前
整理归并排序
c++·算法·排序算法·信息学奥赛
牛三金1 小时前
匿踪查询沿革-Private Information Retrieval(PIR)
算法·安全
德育处主任1 小时前
『NAS』在群晖部署一个文件加密工具-hat.sh
前端·算法·docker
星辞树1 小时前
从 L1/L2 到 Dropout:深度解析正则化,为何推荐系统“只能练一次”?
算法
玖剹1 小时前
队列+宽搜(bfs)
数据结构·c++·算法·leetcode·宽度优先