2017-01-20 2 views
0

Я пытаюсь проверить, что мои номера являются фибонацией или нет?Как проверить, является ли данное число числом Фибоначчи?

isFibonacci(13); 
function isFibonacci($testedNumber, $a = 1, $b = 1) 
{ 
    if($testedNumber == 0 || $testedNumber == 1) 
     return true;//returning true for 0 and 1 right away. 
    $nextFib = $a + $b;//getting the next number in the sequence 
    if($nextFib > $testedNumber) 
     return false;//if we have passed the tested number, it's not in the sequence 
    else if($nextFib == $testedNumber) 
     return true;//if we have a perfect match, the tested number is in the sequence 
    else 
     isFibonacci($testedNumber, $b, $nextFib);//otherwise, get the next fibonacci number and repeat. 
} 
+0

Фибоначчи - это серия .. пытаетесь ли вы найти это, если данный нет. может быть частью этой серии или нет? –

+0

да это часть номера –

+0

Я не знаю, как это написано на php, но вы можете проверить этот сайт, который дает версии C++ и Python: http://www.geeksforgeeks.org/check-number-fibonacci- номер/ – webmaster

ответ

-1
<?php 

function getFibonicciIndex($number) 
{ 
    $log_base = (1+sqrt(5))/2; 
    $index = log(($number*sqrt(5)-(1/2)), $log_base); 
    return floor($index)+1; 
} 
function getFibonicciNumber($term) 
{ 
    $a = (1+sqrt(5))/2; 
    $b = (1-sqrt(5))/2; 
    $fibonicci_number = (pow($a, $term)-pow($b, $term))/sqrt(5); 
    return $fibonicci_number; 
} 
$number = 14; 
$index = getFibonicciIndex($number); 
$index_value = getFibonicciNumber($index); 
echo ($number == $index_value) ? "yes" : "no"; 

// Эта логика реализует лучший правило, чтобы найти ряд Фибоначчи и их индекс. Сначала предположим, что данное нет. является частью серии Фибоначчи и пытается получить индекс .., а затем для этого заданного индекса мы вычисляем число Фибоначчи и приравниваем его к проверке.

+0

Я не думаю, что ваша реализация верна, 3 и 5 - номер Fibonacii, но показывает № –

+0

@JunedAnsari Пожалуйста, повторите проверку. после вашего комментария я протестировал для обоих. и он показывает да .. и вы должны строго проверить, прежде чем спускать с голосом любой ответ –

+0

еще не показывает, пользователь $ number = 3; затем проверьте –

Смежные вопросы