欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【算法】递归系列:递归初介绍,练习:231.2 的幂、

【算法】递归系列:递归初介绍,练习:231.2 的幂、

2024/11/30 18:31:44 来源:https://blog.csdn.net/m0_73726899/article/details/143220787  浏览:    关键词:【算法】递归系列:递归初介绍,练习:231.2 的幂、

目录

一、理解递归

1、什么是递归?

2、为什么会使用递归?

3、递归使用的场景?

4、那么如何写出递归解法?

二、实践

231. 2的幂

 1.函数头的设计

 2.只关心某一个子问题是如何解决的 ->函数体的书写

  3.注意一下递归函数的出口即可


一、理解递归

1、什么是递归?

函数自己调用自己。

2、为什么会使用递归?

遇到一个问题。

这个问题可以被分解为多个子问题,子问题都相同,并且与主问题相同。

3、递归使用的场景?

在解决⼀个规模为n的问题时,如果满足以下条件,
我们可以使用递归来解决:

a. 问题可以被划分为规模更小的子问题,并且这些问题具有与原问题相同的解决方法。
b.
当我们知道规模更小问题(规模为 n - 1)的解时,我们可以直接计算出规模为 n 的问题的解。
c. 存在⼀
种简单情况,或者说当问题的规模时,我们可以直接求解问题。

般的递归求解过程如下:
a.
验证是否满⾜简单情况。
b.
假设较小规模的问题已经解决,解决当前问题。

4、那么如何写出递归解法?

首先,宏观看待递归的过程
        1.不要在意递归的细节展开图
        2.把递归的函数当成一个黑盒
        3.相信这个黑盒一定能完成这个任务

然后,具体操作。

        1.先找到相同的子问题!!!->函数头的设计
        2.只关心某一个子问题是如何解决的 ->函数体的书写
        3.注意一下递归函数的出口即可

二、实践

231. 2 的幂 - 力扣(LeetCode)

231. 2的幂

分析:

n 为 2 的幂需要满足以下条件:

 1、n 是正整数

 2、n是偶数

 1.函数头的设计

bool isPowerOfTwo(int n)

 2.只关心某一个子问题是如何解决的 ->函数体的书写

之前分析,非正整数不符合n。因此,可以直接进行排除。

if( n <= 0)return false;

检查 n 是否等于 1。因为 20=1,所以 1 是 2 的幂次方,直接返回 true

if(n == 1)return true;

奇数,也不符合。直接排除

if(n % 2 == 1)return  false;

  3.注意一下递归函数的出口即可

而函数的退出条件则是在 n 为 1 的时候。

class Solution {
public:bool isPowerOfTwo(int n) {if(n == 1)return true;if(n<=0)return false;if(n%2 == 1)return  false;return    isPowerOfTwo(n/2);  }
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com