Hướng dẫn is palindrome in python using recursion? - palindrome trong python có sử dụng đệ quy không?

Tôi cần trợ giúp viết một chức năng đệ quy để phát hiện liệu một chuỗi có phải là một palindrom hay không. Nhưng tôi không thể sử dụng bất kỳ vòng lặp nào nó phải đệ quy. Bất cứ ai cũng có thể giúp cho tôi thấy điều này được thực hiện như thế nào. Tôi đang sử dụng Python.

Hướng dẫn is palindrome in python using recursion? - palindrome trong python có sử dụng đệ quy không?

Đã hỏi ngày 4 tháng 6 năm 2009 lúc 17:51Jun 4, 2009 at 17:51

def ispalindrome(word):
    if len(word) < 2: return True
    if word[0] != word[-1]: return False
    return ispalindrome(word[1:-1])

Và đây là lớp lót tốt nhất

def ispalindrome(word):
    return word == word[::-1]

Đã trả lời ngày 4 tháng 6 năm 2009 lúc 19:32Jun 4, 2009 at 19:32

Không biết không biếtUnknown

45.2K26 Huy hiệu vàng137 Huy hiệu bạc181 Huy hiệu Đồng26 gold badges137 silver badges181 bronze badges

1

Từ góc độ thuật toán chung, hàm đệ quy có 3 trường hợp:

1) 0 mục còn lại. Vật phẩm là một palindrom, bằng danh tính.0 items left. Item is a palindrome, by identity.

2) 1 mục còn lại. Vật phẩm là một palindrom, bằng danh tính.1 item left. Item is a palindrome, by identity.

3) 2 mặt hàng trở lên. Loại bỏ mục đầu tiên và cuối cùng. So sánh. Nếu chúng giống nhau, hãy gọi chức năng ở những gì còn lại của chuỗi. Nếu đầu tiên và cuối cùng không giống nhau, mặt hàng không phải là một palindrom.2 or more items. Remove first and last item. Compare. If they are the same, call function on what's left of string. If first and last are not the same, item is not a palindrome.

Việc thực hiện chức năng được để lại như một bài tập cho người đọc :)

Đã trả lời ngày 4 tháng 6 năm 2009 lúc 17:55Jun 4, 2009 at 17:55

GwllosagwllosaGWLlosa

23.6K17 Huy hiệu vàng79 Huy hiệu bạc114 Huy hiệu đồng17 gold badges79 silver badges114 bronze badges

Nếu một chuỗi bằng 0 hoặc một chữ cái dài, thì đó là một palindrom.

Nếu một chuỗi có các chữ cái đầu tiên và cuối cùng giống nhau, và các chữ cái còn lại (tôi nghĩ đó là một lát ____10 trong Python, nhưng con trăn của tôi hơi gỉ) là một palindrom, thì đó là một palindrom.

Bây giờ, hãy viết rằng như một hàm palindrom có ​​một chuỗi. Nó sẽ tự gọi.

Đã trả lời ngày 4 tháng 6 năm 2009 lúc 17:55Jun 4, 2009 at 17:55

GwllosagwllosaDavid Thornley

23.6K17 Huy hiệu vàng79 Huy hiệu bạc114 Huy hiệu đồng8 gold badges90 silver badges156 bronze badges

Nếu một chuỗi bằng 0 hoặc một chữ cái dài, thì đó là một palindrom.

def palindrome(s):
    return len(s) < 2 or s[0] == s[-1] and palindrome(s[1:-1])

Nếu một chuỗi có các chữ cái đầu tiên và cuối cùng giống nhau, và các chữ cái còn lại (tôi nghĩ đó là một lát ____10 trong Python, nhưng con trăn của tôi hơi gỉ) là một palindrom, thì đó là một palindrom.Jun 4, 2009 at 19:41

Stephan202Stephan202Stephan202

Bây giờ, hãy viết rằng như một hàm palindrom có ​​một chuỗi. Nó sẽ tự gọi.13 gold badges124 silver badges131 bronze badges

2

David Thornleydavid Thornley

55,9K8 Huy hiệu vàng90 Huy hiệu bạc156 Huy hiệu đồng

  1. Vì dù sao chúng tôi cũng đăng mã và chưa có một bản Liner nào được đăng, đây là ở đây:

  2. Đã trả lời ngày 4 tháng 6 năm 2009 lúc 19:41

  3. 58.6K13 Huy hiệu vàng124 Huy hiệu bạc131 Huy hiệu đồng

Đây là một quan điểm khác

  1. Một chuỗi palindromic là

  2. Một số chữ cái, x.

  3. Một số cơ chất palindromic.

Cùng một chữ cái, x, lặp đi lặp lại.

Ngoài ra, lưu ý rằng bạn có thể được đưa ra một câu tiếng Anh thích hợp "Có thể là tôi đã thấy Elba." với dấu câu. Checker palindrom của bạn có thể phải lặng lẽ bỏ qua dấu câu. Ngoài ra, bạn có thể phải lặng lẽ phù hợp mà không cần xem xét trường hợp. Điều này phức tạp hơn một chút.Jun 4, 2009 at 18:03

S.LottS.LottS.Lott

Một số dấu câu hàng đầu. Một số chữ cái, x.79 gold badges503 silver badges773 bronze badges

Một số cơ chất palindromic.

def make_palindrome():
    maybe:
        return ""
    elsemaybe:
        return some_char()
    else:
        c = some_char()
        return c + make_palindrome() + c

Một số chữ cái, x, lặp đi lặp lại mà không liên quan đến trường hợp. Một số dấu chấm câu.

Và, theo định nghĩa, một chuỗi có độ dài bằng không là một palindrom. Ngoài ra một chuỗi một chữ cái (sau khi xóa dấu chấm câu) là một palindrom.Jun 4, 2009 at 18:16

Đã trả lời ngày 4 tháng 6 năm 2009 lúc 18:03Dietrich Epp

378K79 Huy hiệu vàng503 Huy hiệu bạc773 Huy hiệu Đồng36 gold badges336 silver badges411 bronze badges

Đây là một cách bạn có thể nghĩ về các chức năng đệ quy đơn giản ... lật lại vấn đề và suy nghĩ về nó theo cách đó. Làm thế nào để bạn tạo ra một palindrom đệ quy? Đây là cách tôi sẽ làm điều đó ...

 palindrom( word):
   IF length of word 1 or 0 THEN
      return 0;
   IF last and first letter equal THEN
     word := remove first and last letter of word;
     palindrom( word);
   ELSE
     return false;

Sau đó, bạn có thể lật nó xung quanh để xây dựng bài kiểm tra.Jun 4, 2009 at 18:04

Đã trả lời ngày 4 tháng 6 năm 2009 lúc 18:16seb

Dietrich Eppdietrich Epp1 gold badge10 silver badges15 bronze badges

200K36 Huy hiệu vàng336 Huy hiệu bạc411 Huy hiệu Đồng

#To solve this I'm using the stride notation within a slice [::]
def amazonPalindrome(input):
    inputB = input
    input = input[::-1]
    #print input
    noPalindrome = inputB + " is not a palindrome"
    isPalindrome = inputB + " is a palindrome"
    #compare the value of the reversed string to input string
    if input[0]!= input[-1]: 
        print noPalindrome
    else:
        print isPalindrome


#invoking the def requires at least 1 value or else it fails
#tests include splitting the string,mixing integers, odd amount palindromes.
#call the def  
amazonPalindrome('yayay')

Chức năng nên mong đợi một chuỗi. Nếu có nhiều hơn thì một chữ cái trong chuỗi so sánh chữ cái đầu tiên và chữ cái cuối cùng. Nếu 1 hoặc 0 chữ cái, trả về true. Nếu hai chữ cái bằng nhau, hãy gọi hàm thì lại với chuỗi, không có chữ cái đầu tiên và chữ cái cuối cùng. Nếu họ không bình đẳng trả lại sai.Apr 29, 2011 at 7:40

Đã trả lời ngày 4 tháng 6 năm 2009 lúc 18:04Surfdork

Sebseb1 silver badge8 bronze badges

a=raw_input("enter the string:")
b=len(a)
c=0
for i in range(b):
    if a[i]==a[-(i+1)]:
        c=c+1
if c==b:
    print a,"is polindrome"
else:
    print a,"is not polindrome"

1.6181 Huy hiệu vàng10 Huy hiệu bạc15 Huy hiệu đồng

Giải pháp của tôi7 gold badges54 silver badges88 bronze badges

Đã trả lời ngày 29 tháng 4 năm 2011 lúc 7:40Mar 29, 2011 at 10:36

2

n=raw_input("Enter a number===>")
n=str(n)
l=len(n)
s=""
for i in range(1,l+1):
    s=s+n[l-i]
if s==n:
    print "Given number is polindrom"
else:
    print "Given number is not polindrom"

SurfDorksurfdork

Huy hiệu đồng 911 Bạc8 Huy hiệu Đồng10 gold badges83 silver badges100 bronze badges

SRAAug 10, 2010 at 9:47

23.8K7 Huy hiệu vàng54 Huy hiệu bạc88 Huy hiệu đồng

int IsPalindrome_Recursive(char *s, int start, int end)
{
    if ((end - start) < 2)
    {
        return 1;
    }
    if (s[start] != s[end])
    {
        return 0;
    }
    return IsPalindrome_Recursive(s, ++start, --end);
}

Đã trả lời ngày 29 tháng 3 năm 2011 lúc 10:36

IsPalindrome_Recursive(s, 0, strlen(s) - 1)

Logic của palindrom trong Python là gì?

Thuật toán palindrom đảo ngược chữ cái hoặc số. So sánh biến tạm thời với chữ cái hoặc số đảo ngược. Nếu cả hai chữ cái hoặc số đều giống nhau, hãy in "Chuỗi/số này là một palindrom." Khác in, "Chuỗi/số này không phải là một palindrom."Reverse the letter or number. Compare the temporary variable with reverses letter or number. If both letters or numbers are the same, print "this string/number is a palindrome." Else print, "this string/number is not a palindrome."

Có bất kỳ chức năng palindrom trong Python?

Chương trình palindrom sử dụng trong khi vòng lặp if (temp = = rev): in ("Số là palindrom!") if (temp = = rev): print ( "The number is palindrome!" ) else : print ( "Not a palindrome!" )

Làm thế nào bạn có thể biết nếu một mảng là đệ quy palindrom?

Cách tiếp cận: Trường hợp cơ sở: Nếu mảng chỉ có một phần tử, tức là bắt đầu == kết thúc thì hãy trả về 1, nếu bắt đầu> kết thúc có nghĩa là mảngMột lần nữa nhưng sự gia tăng bắt đầu từ 1 và giảm kết thúc bằng 1.If array has only one element i.e. begin == end then return 1, also if begin>end which means the array is palindrome then also return 1. If the first and the last elements are equal then recursively call the function again but increment begin by 1 and decrement end by 1.

Python có sử dụng đệ quy để lặp không?

Vì Python không lưu trữ bất cứ điều gì về các bước lặp trước đó, việc lặp lại khá nhanh và tiết kiệm bộ nhớ so với đệ quy.Trong thực tế, hầu hết tất cả các lần lặp có thể được thực hiện bởi các đệ quy và ngược lại.almost all iterations can be performed by recursions and vice-versa.