кодесурса
«PHP

Проблемы с PHP: проблема 3n + 1

script1adsense2code
script1adsense3code

Задачи PHP - 1: упражнение 18 с решением

Напишите программу PHP, в которой вы берете любое положительное целое число n, если n четное, разделите его на 2, чтобы получить n / 2. Если n нечетное, умножьте его на 3 и добавьте 1, чтобы получить 3n + 1. Повторяйте процесс до тех пор, пока достичь 1.

Вход: 12

Согласно Википедии, гипотеза Коллатца является гипотезой в математике имени Лотара Коллатца, который впервые предложил ее в 1937 году. Эта гипотеза также известна как гипотеза 3n + 1.
Гипотеза может быть обобщена следующим образом. Возьмите любое положительное целое число n. Если n четное, разделите его на 2, чтобы получить n / 2. Если n нечетное, умножьте его на 3 и добавьте 1, чтобы получить 3n + 1. Повторите процесс (который был назван «Половина или тройной плюс один») бесконечно , Предположение состоит в том, что независимо от того, с какого числа вы начинаете, вы всегда в конечном итоге достигнете 1.
Пример :
Например, начиная с n = 12, получается последовательность 12, 6, 3, 10, 5, 16, 8, 4, 2, 1.
Например, n = 19 занимает больше времени, чтобы достичь 1: 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4. , 2, 1.

Пример решения :

PHP-код:

<?php
function collatz_sequence($x)
{
    $num_seq = [$x];
    if ($x < 1)
    {
       return [];
    }
    while ($x > 1)
      {
       if ($x % 2 == 0)
       {
         $x = $x / 2;
       }
       else
       {
         $x = 3 * $x + 1;
       }
    # Added line
     array_push($num_seq, $x);
      }
    return $num_seq;
}
print_r(collatz_sequence(12));
print_r(collatz_sequence(19));
?>

Пример вывода:

 массив                                                       
(                                                           
    [0] => 12                                               
    [1] => 6                                                
    [2] => 3                                                
    [3] => 10                                               
    [4] => 5                                                
    [5] => 16                                               
    [6] => 8                                                
    [7] => 4                                                
    [8] => 2                                                
    [9] => 1                                                
)                                                           
массив                                                       
(                                                           
    [0] => 19                                               
    [1] => 58                                               
    [2] => 29   
	[3] => 88                                               
    [4] => 44                                               
    [5] => 22                                               
    [6] => 11                                               
    [7] => 34                                               
    [8] => 17                                               
    [9] => 52                                               
    [10] => 26                                              
    [11] => 13                                              
    [12] => 40                                              
    [13] => 20                                              
    [14] => 10                                              
    [15] => 5                                               
    [16] => 16                                              
    [17] => 8                                               
    [18] => 4                                               
    [19] => 2                                               
    [20] => 1                                               
)

Блок - схема:

«PHP

Редактор кода PHP:

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программу PHP, чтобы вычислить сумму двух обратных чисел и отобразить сумму в обратной форме.
Далее: Напишите программу PHP, чтобы проверить, является ли данное число уродливым числом.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code