Code: Alles auswählen
#include<stdio.h>
int fib (int n);
int main()
{
int index=1;
while(index<=40)
{
printf("fib(%d) -> %d\n",index,fib(index));
index++;
}
return 0;
}
int fib (int n)
{
if(n<2)
return n;
return fib(n-1)+fib(n-2);
}
Code: Alles auswählen
#include<stdio.h>
int main ()
{
int n1=1,n2=1;
printf("%d\n%d\n",n1,n2);
for (int i=0; i<20 ; i++){
n1=n1+n2;
n2=n1+n2;
printf("%d\n%d\n",n1,n2);
}
return 0;
}
ich hebe mir zu der fibonaccireihe ein paar gedanke gemacht und bin somit zum 2. code gekommen welcher kürzer und schneller ist als der im tutorial
jetzt frage ich mich wo der der vorteil im ersten code liegt und
2. wieso der 1. so viel länger dauert und wie dieser genau arbeitet und wieso er funktioniert(ich glaube das erklärt sich gegenseitig)
Code: Alles auswählen
int fib (int n)
{
if(n<2)
return n;
return fib(n-1)+fib(n-2);
}
Code: Alles auswählen
return fib(n-1)+fib(n-2);
Code: Alles auswählen
return fib(4)+fib(3);
fib(5) = 5
bei 6 -> 5 4 -> 4 3 3 2 -> 3 2 2 1 2 1 1 0 -> 2 1 1 0 1 0 1 1 0 1 1 0 -> 1 0 1 1 0 1 0 1 1 0 1 1 0
fib (6) = 8 also...
bin mir nicht ganz sicher ob es genau so funktioniert aber es kommt auf jeden fall immer das richtige raus

ruft die funktion sich solange selbst auf bis sie nur noch aus 0en und 1en besteht die sie laut fib ohne weitere überarbeitung zurückgeben werden müssen und die werden dann am ende zusammengerechnet?
Danke im Voraus
