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ỏ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
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:
Đã trả lời ngày 4 tháng 6 năm 2009 lúc 19:41
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
Một chuỗi palindromic là
Một số chữ cái, x.
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() + cMộ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)