《算法设计与分析》——递归

本文深入探讨了递归算法的概念,通过阶乘、斐波那契数列、阿克曼函数、排列问题、整数划分、汉诺塔问题和插入排序等实例,详细阐述了递归的原理和应用。递归是解决复杂问题的有效工具,能简化代码并提高可读性。
摘要由CSDN通过智能技术生成

1. 递归的概念

递归算法:

  • 直接或间接调用自身的算法称。

递归函数:

  • 用函数自身给出定义的函数。

注:

  • 有些数据结构,本身带有递归特性,适合用递归的形式来描述,如:二叉树
  • 有些问题,虽然其本身没有明显的递归结构,但用递归技术来求解使设计出的算法简洁易懂、易于分析。

2. 实例

2.1 阶乘函数

递归定义:
n ! = { 1 , n = 0 n ( n − 1 ) ! , n > 3 n!=\left\{ \begin{aligned} 1&, n=0 \\ n(n-1)!&, n>3 \end{aligned} \right. n!={ 1n(n1)!,n=0,n>3
实现:

public int factorial(int n){
   
    if(n==0) return 1;
    else return factorial(n-1)*n;
}

2.2 Fibonacci函数(斐波那契函数)

无穷数列1,1,2,3,5,8,13,21,34,55,…, 被称为Fibonacci数列。

递归定义:

F ( n ) = { 1 , n = 0 , 1 F ( n − 1 ) + F ( n − 2 ) , n > 1 F(n)=\left\{ \begin{aligned} 1&, n=0,1 \\ F(n-1)+F(n-2)&, n>1 \end{aligned} \right. F(n)={ 1F(n1)+F(n2),n=0,1,n>1
非递归定义:
F ( n ) = 1 5 ( ( 1 + 5 2 ) n + 1 − ( 1 + 5 2 ) n − 1 ) F(n)=\frac{1}{\sqrt 5}\left(\left(\frac{1+\sqrt 5}{2}\right)^{n+1}-\left(\frac{1+\sqrt 5}{2}\right)^{n-1}\right) F(n)=

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值