关于递归的一点使用心得

本文分享了使用递归的心得,主要关注两点:1. 递归终止条件及返回值;2. 如何结合参数与递归结果解决问题。通过这样的思考方式,可以有效地理解和运用递归函数。
摘要由CSDN通过智能技术生成

使用递归只需要关注两个方面:
1、递归的最后一步需要做什么,比如返回一个什么样的值
2、读懂递归函数的含义,想想第一步怎么用已有的参数结合后续递归函数返回的值来得到想要的结果。
只要写这两步,不需要明白递归函数内部如何操作,即可完成递归。
比如:

//查询根节点为root的树中是否包含e,递归
private boolean contains(Node node, E e) {
    if (node.e == null) {
        return false;
    }
    if (e.compareTo(node.e) == 0) {
        return true;
    } else if (e.compareTo(node.e) < 0) {
        return contains(node.left, e);
    } else {
        return contains(node.right, e);
    }
}
//前序遍历根节点为node的树
private void preOrder(Node node) {
    if (node == null) {
        return;
    }
    System.out.println(node.e);
    preOrder(node.left);
    preOrder(node.right);
}
//递归获取反转链表的头节点
public Node reverse1(Node head){
    if(head == null || head.next == null){//当链表为空或递归到了最后一层时
        return head;
    }
    Node last1 = reverse1(head.next);   //递归
    head.next.next = head;            //改变head后一位的指向
    head.next = null;                //改变head的指向
    return last1;                    //返回反转后的链表首位
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值