【C语言】函数递归及代码示例

本文介绍了编程中的递归概念,它是指程序调用自身的一种算法。文章通过四个示例——递归求斐波那契数、计算数字之和、递归求幂以及字符串字符反转,详细阐述了递归的工作原理和应用,强调了递归在复杂问题简化上的优势,同时指出虽然递归清晰易懂,但在效率上可能不如迭代实现。
摘要由CSDN通过智能技术生成

在数学中,关于递归函数的定义是这样的:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值x1,其函数值f(x1)由f(f(x1))决定,那么就称f(x)为递归函数。

在编程语言中,程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,大大减少了程序的代码量。

递归的主要思考方式在于:把大事化小

递归的两个必要条件:

  1. 存在限制条件,当满足这个限制条件的时候,递归便不再继续
  2. 每次递归调用之后越来越接近这个限制条件

不多说,直接上代码:
例1:递归和非递归分别实现求第n个斐波那契数(斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21…这个数列从第3项开始,每一项都等于前两项之和。)

首先用递归的方法:

int fib(int i)
{
	if(i<=2)
		return 1;
	else
		return fib(i-1)+fib(i-2);         //递归调用fib()
}
int main()
{
	int i = 0;
	int ret = 0;
	printf("请输入:");
	scanf("%d",&i);
	ret = fib(i);
	printf("第%d个斐波那契数是:%d\n",i,ret);
	system("pause");
	return 0;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值