¿Es esta función Fibonacci? -- php campo con fibonacci-sequence camp codereview Relacionados El problema

Is this Fibonacci function right?


5
vote

problema

Español

¿Este es este un método correcto de Fibonacci con la recursión?

  function fibb($limit,$first_numer=0,$second_number=1){         echo $first_numer." ";         echo $second_number." ";         if($limit > 0){             fibb($limit-2,$first_numer+$second_number,($first_numer+$second_number+$second_number));         } }   
Original en ingles

Is this a correct method of Fibonacci with recursion?

function fibb($limit,$first_numer=0,$second_number=1){         echo $first_numer."\n";         echo $second_number."\n";         if($limit > 0){             fibb($limit-2,$first_numer+$second_number,($first_numer+$second_number+$second_number));         } } 
     

Lista de respuestas

4
 
vote

En cierto sentido, su función produce los números correctos. Sin embargo, la condición de terminación no es del todo correcta. Por ejemplo, fibb(3) y fibb(4)1 Produce una salida idéntica: cada una imprime seis números. ¿Por qué seis? La interpretación más natural de los parámetros sería que 9988776655544332 debería especificar el número de elementos en la secuencia a imprimir.

La raíz del problema es que cada llamada a fibb() imprime dos líneas, lo que significa que la salida siempre se imprimirá en pares. Normalmente, querrá imprimir un solo número por llamada.

Además, su nombramiento es poco convencional. ¿Por qué fibb()4 con dos b s? Además, $first_numer está mal escrito.

  function fibonacci($limit, $first_number=0, $second_number=1) {     if ($limit <= 0) {         return;     }     echo "$first_number ";     fibonacci($limit - 1, $second_number, $first_number + $second_number); }   
 

In a sense, your function does produce the right numbers. However, the termination condition is not quite right. For example, fibb(3) and fibb(4) produce identical output: each prints six numbers. Why six? The most natural interpretation of the parameters would be that $limit should specify the number of items in the sequence to be printed.

The root of the problem is that each call to fibb() prints two lines, which means that output will always be printed in pairs. Normally, you would want to print just one number per call.

In addition, your naming is unconventional. Why fibb() with two bs? Also, $first_numer is misspelled.

function fibonacci($limit, $first_number=0, $second_number=1) {     if ($limit <= 0) {         return;     }     echo "$first_number\n";     fibonacci($limit - 1, $second_number, $first_number + $second_number); } 
 
 
1
 
vote

Creo que los programadores pueden escribir código con su propia lógica. Debe obtener la salida correcta (con menos código, lo cual es genial).

Hay muchas maneras de hacer lo mismo, como:

  <?php function fibonacci ($n) {    if ($n == 0) {       return 0;    }    else if ($n == 1)    {       return 1;    } else {       return fibonacci( $n - 1 ) + fibonacci( $n - 2 );    } } ?>   
 

I think that programmers can write code with their own logic. You should get the correct output (with less code, which is great).

There are many ways to do the same, such as:

<?php function fibonacci ($n) {    if ($n == 0) {       return 0;    }    else if ($n == 1)    {       return 1;    } else {       return fibonacci( $n - 1 ) + fibonacci( $n - 2 );    } } ?> 
 
 
 
 

Relacionados problema

20  Proyecto EULER # 2 (incluso números de Fibonacci) en Swift  ( Project euler 2 even fibonacci numbers in swift ) 
Pensé que el trabajo a través de Project Euler Problemas en Swift sería una buena manera de aprender cualquier consejo o trucos. Por ejemplo, las tuplas son a...

25  Proyecto EULER PROBLEMA 2 EN COTJURE  ( Project euler problem 2 in clojure ) 
Estoy en el proceso de aprendizaje de Clojure. Soy bastante nuevo en la programación funcional y me gustaría saber si mi código huele o si hay alguna implicac...

6  Calculadora de secuencia N-Bonnaci  ( N bonnaci sequence calculator ) 
El código calcula una secuencia N-Bonnaci a un cierto número, según la entrada del usuario. A continuación, puede imprimirlo a un archivo y / o imprimirlo en ...

7  Calcular Fibonacci en O (log n)  ( Calculate fibonacci in olog n ) 
Este programa calcula el número de $ N $ TH FIBONACCI, en el tiempo $ O ( log n) $. Estoy buscando revisión de código, optimizaciones y mejores prácticas....

4  Ruby Fibonacci (n) Cálculo recursivo optimizado con la reflexión  ( Ruby fibonaccin recursive computation optimized with reflection ) 
La idea es tomar el método recursivo de FibonAcci (N) conocido (y terriblemente malo): # recursively computate fibonacci(n) def fib(n) n <= 2 ? 1 : fib(n...

7  Implementar una secuencia de Fibonacci genérica en óxido sin usar copia rasgo  ( Implement a generic fibonacci sequence in rust without using copy trait ) 
Estoy tratando de aprender a óxido y soy un principiante. ¿Cómo se hace frente a la implementación de una versión genérica de la secuencia FIBONACCI sin usar ...

3  Implementar el rango de Fibonacci  ( Implement fibonacci range ) 
Estoy implementando una gama FIBONACCI en C ++ 17 de tal manera que admite #include "fib.h" #include <iostream> int main() { for (int x : Fibonacci())...

7  Terminando un bucle C cuando se alcanza el límite máximo de hardware  ( Terminating a c loop when maximum hardware limit reached ) 
en Respuesta a la pregunta C: f & gt; 0 vs perl: $ f & gt; 0? , el uso El desbordamiento para terminar el bucle se conoce como "práctica de programación ...

3  Euler 2: Fibonacci simple  ( Euler 2 simple fibonacci ) 
Estoy empezando a experimentar con F # (desde un fondo C #). Creo que estoy empezando a entrar en la forma de pensar correcta, pero este código todavía parece...

12  Proyecto EULER # 2 Incluso números de Fibonacci  ( Project euler 2 even fibonacci numbers ) 
Problema: Se genera cada nuevo término en la secuencia Fibonacci al agregar el Dos términos anteriores. Al comenzar con 1 y 2, los primeros 10 términos s...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos