再来谈谈递归

题记:

今天在知乎看到一句话,所谓的算法最终一切都归于——数学之美,显然目前我还没到这个水平,还仅仅是畅游在算法的海洋中发现一个个“新大陆”,未触及的知识还有很多;虽说学算法学的是它的思想,但就这个思想是最不好让人把握的,一旦一个题目把握了它的解题思路,立马醍醐灌顶,豁然开朗;就在之前的字节跳动笔试题中就有递归的身影,巧妙且精简,让人回味无穷;
今天就简单回味下递归的解题思路;

例子1:

题目描述:给你一个字符串,判断是否是回文字符串,例如:“23455432”,或者”Hello,olleH”等形式;

分析:
本题是典型的可以通过递归来解决的,用两个索引,一个指向开头,一个指向结尾,不断地判断开头和结尾的字符是否一样,如果不一样则返回false,同时必须也有一个终止条件,就是结尾的索引是否是大于开头的;
代码如下:

class Solution {
public:
    bool Recursive(string& str) {
        if (str.size() == 0) return false;

        int start = 0, end = str.size() - 1;

        if (end > start) {
            if (str[start] != str[end])
                return false;
            else
                return Recursive(str.substr(start + 1, end - 1));
        }
        return true;
    }
};

先开,不断更新;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值