Палиндром Рекурсивной функции в [закрытом] Python

Я использовал ответ, который начинался с

/// <summary> and it mostly worked:
//for some reason Visual Studio 2010 did not understand AddressFamily.Inernetwork
    if (address.Address.AddressFamily != AddressFamily.InterNetwork) 

Я должен был использовать:

if(address.Address.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)

, но я фактически использовал:

if(!address.Address.AddressFamily.Equals(System.Net.Sockets.AddressFamily.InterNetwork))

Также Добавлено:

if (network.OperationalStatus != OperationalStatus.Up)
                continue;

Поскольку были некоторые сети, которые не работали и никогда не должны были там, я видел, что они были в реестре. --- Элвин

8
задан Community 29 November 2019 в 08:20
поделиться

8 ответов

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

And here is the best one liner

def ispalindrome(word):
    return word == word[::-1]
52
ответ дан 5 December 2019 в 04:28
поделиться

С точки зрения общего алгоритма рекурсивная функция имеет 3 случая:

1) Осталось 0 товаров . Предмет является палиндромом по идентичности.

2) Остался 1 элемент . Предмет является палиндромом по идентичности.

3) 2 или более предмета . Удалите первый и последний элемент. Сравните. Если они совпадают, вызовите функцию на том, что осталось от строки. Если первый и последний не совпадают, элемент не является палиндромом .

Реализация самой функции предоставляется читателю в качестве упражнения :)

42
ответ дан 5 December 2019 в 04:28
поделиться

Если строка состоит из нуля или одной буквы, это палиндром.

Если строка имеет одинаковую первую и последнюю буквы, а остальные буквы (я думаю, что это [1: -1] фрагмент в Python, но мой Python немного заржавел) - это палиндром, это палиндром.

Теперь напишите это как функцию палиндрома, которая принимает строку. Он вызовет сам себя.

3
ответ дан 5 December 2019 в 04:28
поделиться

Вот еще одна точка зрения

Палиндромная строка - это

  1. Некоторая буква, x .

  2. Некоторая палиндромная подстрочка.

  3. Та же буква, ] x , повторяется.

Также обратите внимание, что вам может быть дана правильная английская фраза: «Able was I before I saw Elba». с пунктуацией. Вашему контролеру палиндрома, возможно, придется незаметно пропускать знаки препинания. Кроме того, вам, возможно, придется спокойно провести сопоставление, не рассматривая случай. Это немного сложнее.

  1. Некоторые начальные знаки препинания. Некоторая буква, x .

  2. Некоторая палиндромная подстрока.

  3. Некоторая буква, x , повторяется без учета регистра. Некоторая конечная пунктуация.

И, по определению, строка нулевой длины - это палиндром. Также однобуквенная строка (после удаления знаков препинания) является палиндромом.

2
ответ дан 5 December 2019 в 04:28
поделиться

Поскольку мы все равно публикуем код, а однострочный текст еще не опубликован, вот:

def palindrome(s):
    return len(s) < 2 or s[0] == s[-1] and palindrome(s[1:-1])
2
ответ дан 5 December 2019 в 04:28
поделиться

Функция должна ожидать строку. Если в строке больше одной буквы, сравните первую и последнюю букву. Если 1 или 0 букв, вернуть истину. Если две буквы равны, вызовите функцию снова со строкой без первой и последней буквы. Если они не равны, верните false.

 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;
1
ответ дан 5 December 2019 в 04:28
поделиться

Вот способ придумать простые рекурсивные функции ... переверните проблему и подумайте о ней таким же образом. Как сделать палиндром рекурсивно? Вот как бы я это сделал ...

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

Тогда вы можете перевернуть его, чтобы построить тест.

1
ответ дан 5 December 2019 в 04:28
поделиться
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"
-1
ответ дан 5 December 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: