C语言:递归

递归简单来说就是函数自己调用自己。

特点:一般代码比较简洁,没有出口。

例子1:用一个函数计算阶乘

cpp 复制代码
#include<stdio.h>

//不用递归
int fac(int n)
{
	int val = 1;
	for (int i = 1; i <=n;i++)
	{
		val *= i;
	}
	return val;
}

//用递归
int fac1(int n)
{
	if (n == 1)
	{
		return 1;
	}
	return n * fac1(n - 1);
}


int main()
{
   
	printf("%d\n", fac(5));
	printf("%d\n", fac1(5));

	return 0;
}

例子2:斐波那契值

cpp 复制代码
#include<stdio.h>


//1 2 3 4 5 6 7  8   从第三个数开始,它的值等于它前两项的和
//1 1 2 3 5 8 13 21
//用递归
int fibonacci(int n)
{
	if (n == 1 || 2 == n)
	{
		return 1;
	}

	return fibonacci(n - 2) + fibonacci(n - 1);
}

//循环法
int fibo(int n)
{
	if (1 == n || 2 == n)
	{
		return 1;
	}
	int v1 = 1;
	int v2 = 1;
	int v3;
	for (int i=3;i<=n;i++)
	{
		v3 = v1 + v2;
		v1 = v2;
		v2 = v3;
	}
	return v3;
}

int main()
{
	
	printf("%d\n", fibo(40));
	printf("%d\n", fibonacci(40));


	return 0;
}

例子3:倒序打印

cpp 复制代码
#include<stdio.h>



void print(char* str)//abcd dcba倒序打印
{
	if (*str == '\0')
	{
		return;
	}
	print(str + 1);        //printf("%c", *str);此为正打印
	printf("%c", *str);    //print(str + 1);    abcd abcd
}

int main()
{
	
	print("abcd");

	return 0;
}
相关推荐
南境十里·墨染春水7 小时前
C++传记(面向对象)虚析构函数 纯虚函数 抽象类 final、override关键字
开发语言·c++·笔记·算法
无巧不成书02188 小时前
30分钟入门Java:从历史到Hello World的小白指南
java·开发语言
2301_797172758 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
有为少年9 小时前
告别“唯语料论”:用合成抽象数据为大模型开智
人工智能·深度学习·神经网络·算法·机器学习·大模型·预训练
比昨天多敲两行9 小时前
C++ 二叉搜索树
开发语言·c++·算法
Season4509 小时前
C++11之正则表达式使用指南--[正则表达式介绍]|[regex的常用函数等介绍]
c++·算法·正则表达式
Tisfy9 小时前
LeetCode 2839.判断通过操作能否让字符串相等 I:if-else(两两判断)
算法·leetcode·字符串·题解
zs宝来了9 小时前
Playwright 自动发布 CSDN 的完整实践
java
问好眼9 小时前
《算法竞赛进阶指南》0x04 二分-1.最佳牛围栏
数据结构·c++·算法·二分·信息学奥赛
会编程的土豆9 小时前
【数据结构与算法】优先队列
数据结构·算法