【个人笔记】英雄哥-《LeetCode零基础指南》(第十讲) 简单递归

Day 9 二级指针

在这里插入图片描述

递归概念定义

递归含义

就是函数反复调用自己。实现函数,函数会调用自身
满足条件后一定要return,否则会无限循环

递归函数实现

// 实现函数,作为阶乘的递推式
// 实现步骤 1
// 建立函数名称,确定参数类型和返回值类型,如下
int JieCheng(int n){
}
// 实现步骤 2
// 优先设立递归出口
// 当 n=0或者1时,n! 为1,所以结束循环
int JieCheng(int n){
	if (n <= 1){
		return 1;
	}
}
// 实现步骤 3
// 建立递归规则
int JieCheng(int n){
	if (n <= 1){
		return 1;
	}
	return n * JieCheng(n-1);
}

题目练习

LC 172 阶乘后的零

给定一个整数n, 返回n!中尾随零的数量。
例1:
输入 n = 5 输出 1
原因 5! = 120 有1个尾随0

先考虑什么状况尾数会为0,并且会有几个

  1. 当n<5时,1 2 3 4的阶乘是不会出现以0为结尾的数字,所以第一条设定 n < 5时return 0
int trailingZeroes(int n){
	if(n<5){
		return 0;
}
  1. 当一个数字尾数有0时,代表这个数会被 2 x 5 = 10 提供一个 0 (4x5,6x5,8x5都会有因子2x5)所以问题会被先转化成2 和 5的数量
  2. 如何在步骤2上更简洁一步?考虑2和5的数量关系,当n = 5时,2的数量 > 5的数量,所以直接求5的个数,2的因子个数永远会比5大
  3. 根据5的个数,可以得知在阶乘中会出现的状况有:5, 5x5 , 5x5x5, 5x5x5x5…
  4. 根据4设立递归思想,求5因子数量
  5. 逆推后可以有如下式子,套用递归进行求解。
    在这里插入图片描述
    在这里插入图片描述

LC 1342 将数字变为0的操作次数

提供一个非负整数num,返回将其变为0的步数。
若为偶,除以2
若为奇,减去1

如题 递归思路为再次调用结果进行奇/偶判断

int numberOfSteps(int num){
    if(num==0){
        return 0;                      // 跳出条件
    }
    if (num%2 != 1){
        return numberOfSteps(num/2)+1; // 如果是偶数,num除以2后次数+1
    }
    else{
        return numberOfSteps(num-1)+1; //如果是奇数,num减去1后次数+1
    }
}

在这里插入图片描述

LC 222 完全二叉树的节点个数

我去 树我完全不懂啊!
只能班门弄斧了

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

int countNodes(struct TreeNode* root){
    if(root == NULL) {
        return 0;             
    }                         
    return countNodes(root->left) + countNodes(root->right) + 1;
}
  1. 跳出条件 当root数量为0时跳出
  2. 递归方式 左子树个数+右子树个数+1
    在这里插入图片描述

LCP 44 开幕式烟火

完蛋了哈希表也不会。。。菜哭了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值