2013-06-21 4 views
4

это php-код с использованием аргумента функции для проверки строки - это палиндром или нет .. помогите мне в том, чтобы сказать мне шаг за шагом .., что происходит процесс ... iam не понялпроверка состояния палиндрома с использованием аргументов функции

function Palindrome($string) { 

    if ((strlen($string) == 1) || (strlen($string) == 0)) { 
     echo " STRING IS PALINDROME"; 
    } 

    else { 

     if (substr($string,0,1) == substr($string,(strlen($string) - 1),1)) { 
      return Palindrome(substr($string,1,strlen($string) -2)); 
     } 
     else { echo " STRING IS NOT A PALINDROME"; } 
    } 
} 


Palindrome("121"); 
+2

эй, это может быть какая-то домашняя работа? 2 разных пользователя с тем же вопросом ... http://stackoverflow.com/questions/17237021/function-based-on-palindrome-using-php-code –

ответ

0

использование

function Palindrome($string) { 
    return strrev($string) === $string; 
} 

var_dump(Palindrome("121")); 

ваша функция проверяет длину, если его 0 или 1 он должен быть палиндром.

Затем он сравнивает первое письмо с последним. это они одни и те же, Возьмите оба повтора.

поэтому вызов 121 идет

121 не равно 0 или 1 полукокса длиной,

чек первым равен последнему. 1 = 1

удалить обе 1 Опережая 2

рестарт с 2 в качестве аргумента.

2 равно 0 или 1 полукокса длиной,

возвращение Строка Palindrome.

функция ив Размещенное гораздо более простой способ проверить

+2

OP не спрашивает об этом. – Carlos

+2

true, но я считаю, что этот подход намного лучше, чем сложная функция с рекурсией :) – paranoid

+1

Да, это лучший подход, но вопрос о рекурсии. Te OP просто хочет знать, как работает его функция. – Carlos

1

Он использует рекурсию.

Программа работает именно так. Если слово не имеет букв или имеет одну букву, это палиндром. 'a' является палиндром, и поэтому есть ''

Итак, ваша программа проверит, совпадает ли первая буква с последней буквой в данном слове. Если не его не палиндром Если это произойдет, это будет удалить последнюю букву и первую букву и последнюю букву и проверьте еще раз

Так что, когда вы говорите 121 1. Он проверит 1 и 1, которые соответствуют. Так он будет вызывать такую ​​же функцию с 2 2. Затем он удалит 1 и 1 3. Он проверит 2 4. Поскольку 2 является один символ это палиндром

Если и попросить аввы

  1. Будет проверяться а и a, которые соответствуют. Так он будет вызывать такую ​​же функцию с бб
  2. Он будет проверять б и б

Если и попросить phpcodephp

  1. Это будет соответствовать р и р. Поэтому он будет вызывать ту же функцию с hpcodeph
  2. Он будет соответствовать h и h. Поэтому он будет вызывать ту же функцию с pcodep
  3. он будет соответствовать p и p. Поэтому он будет вызывать ту же функцию с кодом
  4. Он будет соответствовать c и e, которые не совпадают.Так что это не палиндром
3

Эта функция принимает строку в качестве аргумента в качестве входных данных

Первое, что он делает это проверяет рекурсивную базовый случай. Мы вернемся к этому

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

if (substr($string,0,1) == substr($string,(strlen($string) - 1),1)) 

Если это совпадает, то функция рекурсивно вызывает себя снова, но на этот раз с первым и последним символом удален, это делается с помощью этой линии

return Palindrome(substr($string,1,strlen($string) -2)); 

Если когда-нибудь первый символ не соответствует последнему символу, функция автоматически выводит в HTML «струна НЕ ПАЛИНДРОМ через echo

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

Если вам нужна помощь с рекурсии, дайте мне знать, я выложу ссылку Tutorial

0

Этот алгоритм проверки, если первый и последняя буква строки равна. Если это так, алгоритм обрабатывает первую и последнюю букву строки и называет себя рекурсивным. И это, пока строка не будет пустой (или останется только одна буква) Например, строка «blaalb» Алгоритм вызывается с использованием Palindrome («blaalb»). Как вы можете видеть, первая и последняя буква одинаковы («b»), поэтому эти буквы обрезаются. (если нет, строка не будет палиндром и «STRING IS NOT A PALINDROME» будет возвращена), теперь алгоритм теперь называет себя Palindrome («laal»). Опять же, «l» обрезается, а затем «a» не строка пуста и возвращается «STRING IS PALINDROME». Имейте в виду, что, например, «blaxalb» также является палиндром, и поэтому алгоритм проверяет, является ли длина строки (strlen) равной 1 или 0, чтобы знать, что она закончена.

1

Использует рекурсивную функцию для проверки строки палиндром или нет. Во-первых, это проверка длины строки в 1 или 0 с помощью функции strlen(). Если да, то прямо верните «да», иначе он проверит первую букву i.e substr ($ string, 0,1) с последней буквой i.e. Substr ($ string, (strlen ($ string) - 1), 1). Если это правда, то он будет рекурсивно проверять подстроку, исключая первую букву и последнюю букву, то есть Palindrome (substr ($ string, 1, strlen ($ string) -2)) ;.