回文字符串递归解法表达式怎么理解?
def is_palindrome(n,start,end):if start > end:
return 1
else:
return is_palindrome(n,start+1,end-1) if n == n else 0
string = input("请输入一串字符串:")#这里我输入:addddda
length = len(string)-1
if is_palindrome(string,0,length): #这里面的实参是什么意思?跟形参start end之间是什么关系?
print('"%s"是回文字符串!' % string)
else:
print('"%s"不是回文字符串!' % string)
return is_palindrome(n,start+1,end-1) if n == n else 0 这句该怎样理解,当n == n不成立时,,下面的步骤应该是怎样的,最好一步一步写,,求解::多谢多谢!! 这么短的程序,自己拿着笔顺着走一遍不就出结果了么。。。若这个都搞不定,那么今后如何去看上万行的代码。。。
形参和实参不理解,这到还算是个问题
打个比方,有一张表(就是函数),表中需要填写信息(信息名称实际上就是形参),需要的信息有姓名、性别、年龄(就好比这里的n、start、end)。小明填写了他的信息:小明、男、15岁(这就是实参,相当于string,0,length-1)
这次帮你写一下注释,今后更多还是要靠自己,那样学到的才扎实
def is_palindrome(n,start,end):#3、第一次调用,is_palindrome('addddda',0,6)
if start > end:#4、判断0>6,为假,去执行else
return 1
else:/5、执行下面这句
return is_palindrome(n,start+1,end-1) if n == n else 0 #6、先判断n==n,若为真,返回is_palindrome('addddda',1,5)的值,若为假返回0,显然为真,那么递归调用is_palindrome('addddda',1,5),再去执行3
string = input("请输入一串字符串:")#这里我输入:addddda
length = len(string)-1 #1、length=7-1=6
if is_palindrome(string,0,length): #2、函数的返回值作为if的条件,所以先去执行函数,is_palindrome('addddda',0,6)
print('"%s"是回文字符串!' % string)
else:
print('"%s"不是回文字符串!' % string)
你要问幼儿园小朋友,一元二次方程都不会,,小朋友怎么回答你,就是因为不懂才问的,,你要是不想回复,,不理我问的问题就行了呗,何必这样说。 还有代码我是拷贝别人的,形参和实参我理解,忘了删除这一行问题
#这里面的实参是什么意思?跟形参start end之间是什么关系? 本帖最后由 Twilight6 于 2020-11-21 12:03 编辑
看下下面这些递归大致步骤,你前面太长了,但是大体上就这里后续的样算都是这样:
假设你输入是 ada , 此时 length 就为 2 ,然后调用函数 is_palindrome(string,0,length) 则:
is_palindrome('ada',0,2) --> if start(0) > end(2) --> False --> else --> return is_palindrome('ada',0+1,2-1) if n == n else 0 --> return is_palindrome('ada',0+1,2-1)
第一次进入递归:
is_palindrome('ada',1,1) --> if start(1) > end(1) --> False --> else --> return is_palindrome('ada',1+1,1-1) if n == n else 0 --> return is_palindrome('ada',2,0)
第二次进入递归:
is_palindrome('ada',2,0) --> if start(2) > end(0) --> True--> return 1
最终返回 1 ,这里 return 用了三元运算符,即 <结果> if <条件> else <结果> , if 条件成立,则执行 if 前面的结果,反之执行 else 后面的结果
Twilight6 发表于 2020-11-21 12:01
看下下面这些递归大致步骤,你前面太长了,但是大体上就这里后续的样算都是这样:
假设你输入是 ada ...
大神就是大神。。。多谢了
页:
[1]