Exemple de programme pour trouver la séquence de Fibonacci

Quand je pensais au problème FizzBuzz, j'ai également programmé le problème "Créer un programme qui génère et affiche 45 séquence Fibonacci (pour le moment)". Je commence à me demander si cela pourrait être une sorte d'indicateur pour. Consultez les balises de cet article et les commentaires de l'exemple de code pour savoir ce que vous voulez dire.

L'exécution de l'exemple de programme suivant (hors commentaires) a été confirmée sur ce site.

Pour C

fib.c


#include <stdio.h>

// #define NOT_TAILRECUR

#ifdef NOT_TAILRECUR
unsigned long long fib(int x)
{
  if (x == 0)
    return (0);
  else
  if (x == 1)
    return (1);
  else
    return (fib(x-1) + fib(x-2));
}
#else
unsigned long long fib_r(
  int x,
  unsigned long long a,
  unsigned long long b)
{
  if (x == 0)
    return (a);
  else
    return (fib_r(x-1, b, a+b));
}
unsigned long long fib(int x)
{
  return (fib_r(x, 0, 1));
}
#endif

int main(void)
{
  for (int n = 0; n < 45; n++)
    printf("%llu ", fib(n));
  printf("\n");
  return (0);
}

Pour Python

fib.py


#### not tail-recur
#def fib(x):
#    if x == 0:
#      return (0)
#    elif x == 1:
#      return (1)
#    else:
#      return (fib(x-1) + fib(x-2))

def fib(x):
  def fib_r(x,a,b):
      if x == 0:
        return (a)
      else:
        return (fib_r(x-1, b, a+b))
  return (fib_r(x,0,1))

for i in range(45):
  print(fib(i), "", end="")

Pour Scheme

fib.scm


;;;; not tail-recur
;(define fib
;  (lambda (x)
;    (cond ((equal? x 0) 0)
;          ((equal? x 1) 1)
;          (else
;            (+ (fib (- x 1)) (fib (- x 2)))))))

(define fib
  (lambda (x)
    (let loop ((x x) (a 0) (b 1))
      (if (equal? x 0) a (loop (- x 1) b (+ a b))))))

(print (map fib (iota 45)))

Recommended Posts

Exemple de programme pour trouver la séquence de Fibonacci
Merci pour la séquence de Fibonacci.
[Python] Un programme pour trouver une séquence de Fibonacci (fonction récursive, méthode de gouvernance divisionnaire, méthode de planification dynamique)
Un programme shell qui affiche une séquence de Fibonacci
Liste d'exemples de sites de distribution de programmes pour les livres Python
Programme d'étude des statistiques
Implémentation de la séquence de Fibonacci
[Python] Exemple de code pour la grammaire Python