算法与数据结构#理解回溯和递归

本文探讨了数据结构和算法中的递归和回溯概念。递归是一种使用自身定义自身的方法,通常与栈相关联。通过举例展示了递归在二叉树中序遍历的应用。回溯是一种算法思想,通过尝试所有可能的选择并适时终止错误路径(剪枝)。递归和回溯的关系在于回溯过程中包含了递归函数的调用,递归则是在回溯算法中的选择过程。
摘要由CSDN通过智能技术生成

大学后两年主要在学习数据分析、数据挖掘算法,好久没有复习数据结构和算法这门课的知识。拾起来的过程不易,多做笔记。

一.递归

程序调用自身的编程技巧称为递归( recursion)。 
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模
较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

通常来说,为了描述问题的某一状态,必须用到该状态的上一个状态;而如果要描述上一个状态,又必须用到上一个状态的上一个状态…… 这样用自己来定义自己的方法就是递归。

递归函数的格式

  • 函数不在递归地情况称作基本情形(base case,也称基本情况)。
  • 函数调用自身来执行子任务的情况就称作递归情形(recursive case)。
if (判断是否为基本情形)
    return 该基本情形时的函数值
else if (判断是否为另一种基本情形)
    return 该基本情形时的函数值
//递归情形
else return (执行某些工作并递归调用)

如利用递归算法阶乘

public static int Print(int n) {
        if (n == 0)
            return 0;
        else {
            System.out.println(n);
            return Print(n - 1);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值