首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用递归检查回文

使用递归检查回文
EN

Stack Overflow用户
提问于 2016-05-06 22:36:10
回答 1查看 620关注 0票数 0

我使用了以下代码来检查字符串是否为回文。但是,当字符串是回文时,它将返回None。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def check(a):

    if len(a)==1 or len(a)==0:
        return True
    if a[0]==a[len(a)-1]:
        check(a[1:len(a)-1])
    else:
        return False




print check("radar")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-07 23:19:34

您需要在函数中返回递归的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def check(a):
    # Base Case
    if len(a) < 2:
        return True

    # Recursive Call
    if a[0] == a[-1]:
        check(a[1:-1])
    else:
        return False

    return check(a[1:-1])

print check("radar")

奖金信息

函数在检查字符串a时执行重复工作。为了避免重复的函数调用,并大大提高算法的性能,您可以考虑回忆录。否则,您可以构建一个大型调用堆栈,并可能导致stack overflow error (嘿,这是网站的名称.)。

下面是实现回忆录的一种可能的方法,方法是围绕您的函数构建一个类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class check:
    def __init__(self):
        self.memo = {}

    def Check(self, a):
        # Base Case
        if len(a) < 2:
            return True

        # Check Memo
        if a in self.memo:
            return self.memo[a]

        # Recursive Call
        if a[0] == a[-1]:
            self.Check(a[1:-1])
        else:
            return False

        # Memoize
        self.memo[a] = True

        return self.Check(a[1:-1])

print check().Check("rats live on no evil star")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37085343

复制
相关文章
漫谈递归-回文链表
执行用时: 20 ms, 在Palindrome Linked List的C++提交中击败了42.09% 的用户
早起的鸟儿有虫吃
2019/03/06
1K0
漫谈递归-回文链表
顺序栈检查回文
里面测试函数我是为了验证一个字符串是否是回文序列的,大家也可以把源文件改了,要用字符串就把数组改为字符数组,结构体的数据类型也可以改. 头文件:Stack.h
别团等shy哥发育
2023/02/27
2230
顺序栈检查回文
计算最长回文子串_用递归判断是否为回文字符串
前面我们讲过一个关于字符串的算法:KMP算法。今天我们来讲另外一个字符串算法:Manacher算法。这个算法是用于解决一个问题叫:最长回文子串。
全栈程序员站长
2022/11/19
5710
计算最长回文子串_用递归判断是否为回文字符串
算法:判断字符串是否为回文串的三种方法(递归,循环,使用栈模拟递归)(考研)
一、递归 bool ispalindrome(string s, int i, int j) { if (i >= j) return true; if (s[i] == s[j]) return ispalindrome(s, i+1, j-1); else return false; } 二、使用栈模拟递归 bool ispalindrome(string s) { int n = s.length(); stack<char> st; for (int i=0; i<n; ++i) st
lexingsen
2022/02/25
8640
Java递归基础案例-回文字符串的判断
回文字符串就是正读倒读都一样的字符串。如”98789”, “abccba”都是回文字符串
红目香薰
2022/11/29
4410
MySQL递归查询_函数语法检查_GROUP_CONCAT组合结果集的使用
在MySL使用递归查询是很不方便的,不像SQL Server可以直接使用声明变量,使用虚拟表等等。如:DECLARE,BEGIN ...  END   ,WHILE ,IF 等等。
星哥玩云
2022/08/17
2.6K0
MySQL递归查询_函数语法检查_GROUP_CONCAT组合结果集的使用
递归算法使用
通常递归算法可以将一个问题的重复调用进行分解,将其分解成一个多次调用,最终完成筛选或者需要的数据。比如我们常见的斐波那契数列就是这样的:
路行的亚洲
2021/06/24
6270
递归的使用
递归函数更实用于有规律的多项式数组,它可以让你的求和更方便,就如同高中学习的等差和等比数列,了解递归,你就可以用程序来做高中的数列题,还可以在你的弟弟妹妹面前装一手。
算法与编程之美
2022/02/17
5270
递归使用----阶乘
/*通过递归调用的方式就阶乘*/ #include<stdio.h> double jiech(int n) { if(n==0||n==1) return 1; if(n>1) return n*jiech(n-1); if(n<0) return -1; } void main() { int k; double y; scanf("%d",&k); y=jiech(k); printf("%d的阶乘结果为:%ld\n",k,y); }
用户4148957
2022/06/14
4600
【Go 语言社区】算法课程 第一季 第5节 回文检查
回文概念:大致就是把这个数倒过来念数字还是和原来的一样. 运行结果: 代码: package main import ( "fmt" ) // 主函数 func main() { fmt.Println("---------------------------------------") fmt.Println("欢迎 来到 Go 语言社区,www.golangweb.com") fmt.Println() fmt.P
李海彬
2018/03/19
6370
【Go 语言社区】算法课程 第一季 第5节 回文检查
递归使用---费力波数列
/*求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2),本文采用是递归法,效率很低,实际当中应该避免使用递归,这里只是用来熟悉它的使用方法*/ #include<stdio.h> unsigned int Fibonacci( unsigned int n) { switch (n) { case 0: return 0;break; case 1: retur
用户4148957
2022/06/14
2520
使用Python语言理解递归
一个函数在执行过程中一次或多次调用其本身便是递归,就像是俄罗斯套娃一样,一个娃娃里包含另一个娃娃。
py3study
2020/01/17
7720
JavaScript中如何使用递归?
在JavaScript程序中,函数直接或间接调用自己。通过某个条件判断跳出结构,有了跳出才有结果。
Javanx
2019/09/04
2K0
JavaScript中如何使用递归?
vue 递归组件使用示例
前文 我们需要做一个树形组件用来展示一些无限子级的数据时就要用到vue提供的递归组件 首页了解一下 vue 中 name属性 为什么 export 有name这个属性 name 类型:string 限制:只有作为组件选项时起作用。 详细: 允许组件模板递归地调用自身。 注意,组件在全局用 Vue.component() 注册时,全局 ID 自动作为组件的 name。 指定 name 选项的另一个好处是便于调试。有名字的组件有更友好的警告信息。另外,当在有 vue-devtools,未命名组
yangdongnan
2019/04/27
2K0
HYSBZ 3676 回文串 (回文树)
3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 1680  Solved: 707 [Submit][Status][Discuss] Description 考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出  现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最  大出现值。  Input 输入只有一行,为一个只包含小写字母(a -z)的非空字符串s。  Output
ShenduCC
2018/04/26
8970
使用FindBugs插件检查Android代码
概述 FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通过使用 Visitor 模式。 FindBugs—代码缺陷分类 Badpractice:不好的做法,代码违反了公认的最佳实践标准; Maliciouscode vulnerability:恶意的代码漏洞; Correctness:正确性; Performance:潜在的性能问
用户1205080
2019/01/23
8410
容器健康检查使用小结
Readiness:确保业务启动OK,再加入Service负载均衡。如果不用service,不配也可。
白鹏飞
2022/04/11
7340
使用Android Lint检查代码缺陷
Android Lint 是Android自带的代码检查工具,它能帮助我们识别很多潜在的错误。
张云飞Vir
2020/03/16
1.2K0
使用Optional来减少null检查
平常我们使用null检查在项目中简直太常见了,从数据库中查询到的数据可能不存在返回null,service中处理中发现不存在返回一个null,在互相调用的时候每次都需要做(if obj != null)的判断,散落在程序中很难看。更难看的是当你遗漏了一个空指针判断,程序就会无情的给你抛出一个NPE让你知道谁才是老大。
Dylan Liu
2019/07/01
8940
点击加载更多

相似问题

使用递归检查回文

50

C递归检查回文

36

带递归的回文检查

30

递归回文检查器

12

在Lisp中使用递归进行回文检查

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文