Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  31 6147
Sikkerhet/Utvikling
CodeBarbarian's Avatar
Hei, lenge siden jeg har sett noen programmering affære her inne.

Så jeg fikk lyst til å leke meg litt med fibonaccitall og vil dere skal være med.

Hoved regelen er å produsere fibonacci tallrekken.

Regler:
  • Du får selv velge språk
  • Du må være kreativ
  • Størrelse har ingenting å si, det er resultatet som teller.
  • Du må poste kode og output.
  • Du har lov til å poste så mange ganger du føler for det(Såklart i forskjellige språk, eller bedre løsninger)



Mitt bidrag blir en "Rekursiv" versjon av Fibonacci.

KODE:

Kode

#include "iomanip"
#include "iostream"
#include "conio.h"

using namespace std;

void fibonacci(int nummer1, int nummer2, int lengde)
{
	unsigned long sum;

	for(int n=0; n < lengde-1 ;n++)
	{
		if(n==0)
		cout << setw(5) << nummer1 << setw(5) << nummer2 << setw(5);
		else
		{
			sum=nummer1+nummer2;
			cout << sum << setw(5);
			nummer1=nummer2;
			nummer2=sum;
		}
	}
}

int main()
{
       fibonacci (  0 ,  1 , 10 ) ; cout << endl;
       fibonacci (  1 ,  1 , 10 ) ; cout << endl;
       fibonacci ( 10 , 11 , 10 ) ; cout << endl;
       fibonacci ( 15 , 16 , 10 ) ; cout << endl;

       _getche();
       return 0;
}

OUTPUT:

Kode

    0    1    1    2    3    5    8   13   21   34
    1    1    2    3    5    8   13   21   34   55
   10   11   21   32   53   85  138  223  361  584
   15   16   31   47   78  125  203  328  531  859

Mvh
CodeBarbarian
Sist endret av CodeBarbarian; 21. juli 2011 kl. 10:09.
Språk: C.

Kode

#include <stdio.h>
#include <math.h>

int main(){
	int i;
	for(i = 0; i < 50; i++)
		printf("%.0f  ", round((pow((1+sqrt(5))/2, i)-pow((1-sqrt(5))/2, i))/sqrt(5)));
	printf("\n");
}
Output:

Kode

0  1  1  2  3  5  8  13  21  34  55  89  144  233  377  610  987  1597  2584  4181  6765  10946  17711  28657  46368  75025  121393  196418  317811  514229  832040  1346269  2178309  3524578  5702887  9227465  14930352  24157817  39088169  63245986  102334155  165580141  267914296  433494437  701408733  1134903170  1836311903  2971215073  4807526976  7778742049
På engelsk, eller Python om du vil:

Kode

a,b = 0,1
for i in range(1,50):
        print a
        a,b = b, a+b
PHP, printer de 30 første.

Kode

<?for(;$j<5e5;)echo$i+=$j,"\n",$j+=$j?$i:1,"\n";

Kode

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
Sist endret av Lanjelin; 21. juli 2011 kl. 11:20.
Sitat av Lanjelin Vis innlegg
PHP, printer de 30 første.

Kode

<?for(;$j<5e5;)echo$i+=$j,"\n",$j+=$j?$i:1,"\n";
Vis hele sitatet...
Har en lignende en på 42 bytes liggende på PHPgolf. Du kan erstatte \n med et faktisk linjeskift og spare én byte :P

Liker løsningen i MS Excel. Skriv 1 i felt A1 og A2, så

Kode

SUM(A1:A2)
i felt A3. Kopier nedover og se at 12 tegn er nok ^_^ (helt til ting begynner å bli feil like etter felt A70).
Enda en kjedelig c++ variant:

Kode

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
double i = 1;
double iprev = 0;
int temp = 0;
while (temp < 30)
	{
	i = (i + iprev);
	cout << i << endl;
	iprev = (i - iprev); 
	temp++;
	}
system("PAUSE");
return 0;
}
Jeg glemte jo å fortelle hvorfor jeg gjorde det på den måten.. Fordelen er altså at man ikke trenger å telle fra null for å få et spesielt tall i rekken. Man kan for eksempel ta fra tall nr 42 til 47:

Kode

#include <stdio.h>
#include <math.h>

int main(){
	int i;
	for(i = 41; i < 47; i++)
		printf("%.0f  ", round((pow((1+sqrt(5))/2, i)-pow((1-sqrt(5))/2, i))/sqrt(5)));
	printf("\n");
}
Output:

Kode

165580141  267914296  433494437  701408733  1134903170  1836311903
Da slenger jeg det ut i Batch også, printer de 30 første.

Kode

@echo off&cls
set /A vi=0
set /A vj=0
set /A ant = 0
:start
set /A vi = %vi% + %vj%
echo %vi%
set /A ant = %ant% + 1
if %vj% == 0 set /A vj = 1
set /A vj = %vj% + %vi%
echo %vj%
set /A ant = %ant% + 1
if %ant% LEQ 29 goto start
pause
Sikkerhet/Utvikling
CodeBarbarian's Avatar
Trådstarter
Sitat av Lanjelin Vis innlegg
Da slenger jeg det ut i Batch også, printer de 30 første.

Kode

@echo off&cls
set /A vi=0
set /A vj=0
set /A ant = 0
:start
set /A vi = %vi% + %vj%
echo %vi%
set /A ant = %ant% + 1
if %vj% == 0 set /A vj = 1
set /A vj = %vj% + %vi%
echo %vj%
set /A ant = %ant% + 1
if %ant% LEQ 29 goto start
pause
Vis hele sitatet...

Den likte jeg svært godt! Utrolig kreativt språk også! :P
Har løst denne i Java vha. rekursivitet

Kode

public class main
{
	public static void main(String args[])
	{
		for(int i = 0; i <=30; i++)
		{
			System.out.println(fibonacci(i)); 
		}
	}

	public static int fibonacci(int j)
	{
		if(j <= 2) return 1; 
		else  return fibonacci(j - 1) + fibonacci(j - 2);
	}
}
Output:

Kode

1
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
Sitat av Opous Vis innlegg
Har løst denne i Java vha. rekursivitet
Vis hele sitatet...
Selv om denne løsningen er fullgod for lave tall er dette selve kremeksempelet på hvorfor man bør ta i bruk memoisering.

Innen du har kommet til tall nummer 21 i rekka så har funksjonen din blitt kalt over 20.000 ganger. Siden fib(10) kaller fib(9) og fib(8), og fib(9) kaller fib(8) enda en gang, i tillegg til fib(7) så ser du at det baller ekstremt fort på seg.

Hvis du utvider funksjonen til noe sånt som:

Kode

private Hashtable oppslagstabell = new Hashtable();

	public static int fibonacci(int j)
	{
		if(oppslagstabell.containsKey(j)) return oppslagstabell.get(j));
		if(j <= 2) return 1;
		else oppslagstabell.put(j, return fibonacci(j - 1) + fibonacci(j - 2);
		return oppslagstabell.get(j);
	}
Her mellomlagrer du resultatene dine, slik at du ikke lenger trenger å gjøre så vanvittig mange kalkulasjoner om igjen for høyere tall. Ikke at løsningen din var særlig dårlig, men å vite om dette kan gjøre at ytelsen til dine fremtidige programmer blir utrolig mye høyere!
Tar litt tid, men pyttsann. Noen som gjetter, og eventuelt ikke er Provo?

Kode

from random import uniform
N = 10000000

def hit(x,y):
    if (x*x + y*y) < 1:
        return 1
    else:
        return 0

m = 0
for i in range(N):
    m += hit(uniform(0,1),uniform(0,1))

a = 4*float(m)/(5*N)
n = 2*(1-a**2/2 + a**4/24 - a**7/5040)

for i in range(50):
    print "%s: %d" %(i,(n**i - (1-n)**i)/2.2360679774997898)
edit: er forresten python - og hvis man ser asymptotisk på det, burde kjøretiden være ganske bra!
edit2: fjernet biblioteksavhengighet
Sist endret av ivioynar; 21. juli 2011 kl. 20:52.
En annen Python-variant:

Kode

def matmult(a, b):
    return (a[0] * b[0] + a[1] * b[2], a[0] * b[1] + a[1] * b[3], a[2] * b[0] + a[3] * b[2], a[2] * b[1] + a[3] * b[3])
    
def fib(n):
    a = (1,0,0,1)
    x = (1,1,1,0)
    while n > 0:
        if n & 1 == 1:
            a = matmult(a, x)
            
        n >>= 1    
        x = matmult(x, x)

    return a[0]
    
for i in xrange(100):
    print fib(i)
    
print fib(1000)
print fib(10000)
print fib(100000)
Hehe, matrisemultiplikasjon ja... Jeg vurderte å bruke matriserepresentasjon og så finne en sær egenverdialgoritme for å regne ut relevante ting, men det ble litt mye slit.
Sitat av Dyret Vis innlegg
Selv om denne løsningen er fullgod for lave tall er dette selve kremeksempelet på hvorfor man bør ta i bruk memoisering.

Innen du har kommet til tall nummer 21 i rekka så har funksjonen din blitt kalt over 20.000 ganger. Siden fib(10) kaller fib(9) og fib(8), og fib(9) kaller fib(8) enda en gang, i tillegg til fib(7) så ser du at det baller ekstremt fort på seg.

Hvis du utvider funksjonen til noe sånt som:

Kode

private Hashtable oppslagstabell = new Hashtable();

	public static int fibonacci(int j)
	{
		if(oppslagstabell.containsKey(j)) return oppslagstabell.get(j));
		if(j <= 2) return 1;
		else oppslagstabell.put(j, return fibonacci(j - 1) + fibonacci(j - 2);
		return oppslagstabell.get(j);
	}
Her mellomlagrer du resultatene dine, slik at du ikke lenger trenger å gjøre så vanvittig mange kalkulasjoner om igjen for høyere tall. Ikke at løsningen din var særlig dårlig, men å vite om dette kan gjøre at ytelsen til dine fremtidige programmer blir utrolig mye høyere!
Vis hele sitatet...
Takk for nyttig informasjon! Byttet ut variablen "i" i for-løkka fra 30 til 100, det endet med at eclipse hang seg og jeg måtte restarte maskinen.
Sist endret av Opous; 21. juli 2011 kl. 21:34.
z0p
uʍop ǝpısdn
z0p's Avatar

Kode

//    \   \
//    \\_ \\_    fibonacci Tallrekken
//    ('_\('_\
//    / \_/\__       Javascript
//   / _/-'/`"
//  {\  )\  )_
//   `"""`"""`
Kode:

Kode

function fib( n, f ) {
    f = f ? f : [0,1];
    for( var i=0; i<n; i++ ) { 
        f.push( f[0] + f[1] );
        f.shift();
    }
    return f[0];
}
Eksempel bruk:

Kode

var l = 9;
var b = document.body; 
b.innerHTML = "";

b.innerHTML += "<br>";
for( i=0; i<=l; i++ ) b.innerHTML += fib(i)+" ";

b.innerHTML += "<br>";
for( i=0; i<=l; i++ ) b.innerHTML += fib(i,[1,1])+" ";

b.innerHTML += "<br>";
for( i=0; i<=l; i++ ) b.innerHTML += fib(i,[10,11])+" ";

b.innerHTML += "<br>";
for( i=0; i<=l; i++ ) b.innerHTML += fib(i,[15,16])+" ";
Utdata:

Kode

0 1 1 2 3 5 8 13 21 34
1 1 2 3 5 8 13 21 34 55
10 11 21 32 53 85 138 223 361 584
15 16 31 47 78 125 203 328 531 859
FL Studio Guru
djxfade's Avatar
Nå vil jeg se noen skrive dette i brainfuck!
Takk for nyttig informasjon! Byttet ut variablen "i" i for-løkka fra 30 til 100, det endet med at eclipse hang seg og jeg måtte restarte maskinen.
Vis hele sitatet...
Ja 100 vil knekke enhver pc og vil aldrig bli ferdig i din levetid.
Fikk lyst til og skrive den om til python og gjøre en profile av koden.

Kode

def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)
Her tar jeg med litt av profile resultatet.
2692542 function calls (6 primitive calls) in 2.280 CPU seconds
Vi ser at på 30 er vi allerede opp i 2692542 funksjon kall.

Øker til 40
331160286 function calls (6 primitive calls) in 284.336 CPU seconds
Her sliter pcen vi fyller opp "memory cache".

@Dyret er inne på memoisering for og gjøre det mere effektivitet.
Vil vise LRU(Least Recently Used) denne algoritmen er nå med i python og kan brukes som decorator.
Denne virker kun på python 3.2 og lru_cache er skrevet av raymond hettinger

Kode

from functools import lru_cache

@lru_cache()
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(100))
På millisekunder får vi resultatet 354224848179261915075
En profile av denne koden.
739 function calls (441 primitive calls) in 0.003 seconds
En klar forskjell og jeg synes at det er litt stillig at vi går fra noe som aldrig vil bli ferdig til 0.003sec.

Tar med en PHPgolf,gjort i python(first 30 numbers in the Fibonacci Sequence)
Denne er på 38 bytes.

Kode

x,y=0,1
while y<9e5:print x;x,y=y,x+y
Sist endret av snippsat; 22. juli 2011 kl. 16:00.
Ja, for prøve jeg også, og legger ved et rask forslag til Fibonacci rekken i programmeringsspråket Ada.

Kode

with text_io; use text_io;
procedure fib is
	a : integer := 0;
	b : integer := 1;
begin
	for x in 0 .. 30
	loop
		a := a+b;
		b := a-b;
		text_io.put_line(integer'image (a));
	end loop;	
end fib;
Resultat:

Kode

 1
 1
 2
 3
 5
 8
 13
 21
 34
 55
 89
 144
 233
 377
 610
 987
 1597
 2584
 4181
 6765
 10946
 17711
 28657
 46368
 75025
 121393
 196418
 317811
 514229
 832040
 1346269
I like turtles
Alfonzor's Avatar
Kode:

Kode

var n:uint=0
var a:uint=0
var b:uint=1
var c:uint

while (n<100){
	
	trace (a)
	
	c=a
	a=b
	b=c+b
	
	n++
}
Output:

Kode

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
2971215073
512559680
3483774753
3996334433
3185141890
2886509027
1776683621
368225352
2144908973
2513134325
363076002
2876210327
3239286329
1820529360
764848393
2585377753
3350226146
1640636603
695895453
2336532056
3032427509
1073992269
4106419778
885444751
696897233
1582341984
2279239217
3861581201
1845853122
1412467027
3258320149
375819880
3634140029
4009959909
3349132642
3064125255
2118290601
887448560
3005739161
3893187721
2603959586
2202180011
511172301
2713352312
3224524613
1642909629
572466946
2215376575
2787843521
708252800
3496096321
4204349121
3405478146
Har en svært kjedelig kode i java her. Prøvde å gjøre den så liten som mulig, men fortsatt lesbar så man kan forstå den. Sikkert ikke det kuleste bidraget, men det er da noe. Forresten er det fritt fram for å komme med forslag til forbedringer. Selv er jeg litt misfornøyd med hvordan det blir bestemt hvor langt opp den skal gå(tallet 154 er forresten der for ingen spesiell grunn, bare random tall på numpaden)

Kode

public class Fib{
	public static void main(String[] args){
		int j=1;
		for(int i = 0; i < 154; j = i + (i = j)){
			System.out.println(j);
		}
	}
}
Når jeg tenker meg om burde kanskje "0" vært med som første i rekken... Det tenkte jeg ikke på.

Edit:
Output

Kode

1
1
2
3
5
8
13
21
34
55
89
144
233
Trykk en tast for å fortsette...
Liten C++ variant. Skrevet rett i nettleseren da jeg ikke har innstallert noen C++ kompliatorer atm. Tror den ville gått igjennom og kjørt

Kode

class fibonacci{
   int main()
   {
     fib(10);
     return 0;
   }

   fib(int i)
   {
      return i <= 2 ? i : fib(i - 1) + fib(i - 2);
   }
};
Sist endret av Opous; 26. juli 2011 kl. 02:07.
Sitat av Opous Vis innlegg
Liten C++ variant. Skrevet rett i nettleseren da jeg ikke har innstallert noen C++ kompliatorer atm. Tror den ville gått igjennom og kjørt

Kode

class fibonacci{
   int main()
   {
     fib(10);
     return 0;
   }

   fib(int i)
   {
      return i <= 2 ? i : fib(i - 1) + fib(i - 2);
   }
};
Vis hele sitatet...
Nei, det ville den ikke, av flere grunner. For det første har du pakket det inn i en klasse, slik at du ikke har noen "global" main. For det andre har du ikke angitt return type på fib-funksjonen. Du vil også få feil på at fib-funksjonen er definert etter main, der den brukes, uten å ha en prototype over main. Videre ville du ikke fått output fordi du aldri skriver til skjerm. Du kunne heller ikke skrevet til skjerm, ettersom du ikke inkluderer <iostream>. Men med disse små endringene vil det kjøre:

Kode

#include <iostream>

int fib(int i)
{
  return i <= 2 ? i : fib(i - 1) + fib(i - 2);
}

int main()
{
 std::cout << fib(10);
 return 0;
}
Men løsningen din var elegant C++, om enn noe ressurskrevende hvis man skal skrive ut en hel serie.
Sitat av Provo Vis innlegg
Nei, det ville den ikke, av flere grunner. For det første har du pakket det inn i en klasse, slik at du ikke har noen "global" main. For det andre har du ikke angitt return type på fib-funksjonen. Du vil også få feil på at fib-funksjonen er definert etter main, der den brukes, uten å ha en prototype over main. Videre ville du ikke fått output fordi du aldri skriver til skjerm. Du kunne heller ikke skrevet til skjerm, ettersom du ikke inkluderer <iostream>. Men med disse små endringene vil det kjøre:

Kode

#include <iostream>

int fib(int i)
{
  return i <= 2 ? i : fib(i - 1) + fib(i - 2);
}

int main()
{
 std::cout << fib(10);
 return 0;
}
Men løsningen din var elegant C++, om enn noe ressurskrevende hvis man skal skrive ut en hel serie.
Vis hele sitatet...
Nesten litt flaut med tanke på at C++ er språket jeg har lært på høgskolen. Men java er det jeg har kodet i det siste året, forveksler muligens litt her og der..selvom mye er likt

Liker også å inkludere

Kode

using namespace std
slik at man slipper

Kode

std::
for hver bidige cout, cin etc.
Sist endret av Opous; 26. juli 2011 kl. 13:48.
Her er en i C# den bruker det gylne snitt. Husker ikke hvor jeg leste det, men det skal i hvertfall stemme bedre og bedre jo større tallene blir. Den trenger dessverre litt drahjelp til å begynne med

Kode

public static void Main(string[] args)
    {
        int[] fibonacciTall = fib(15);       
        Console.ReadLine();
    }

    //Fibonacci etter det gylne snitt
    public static int[] fib(int length)
    {
        int[] fib = new int[length];
        Array.Copy(new int[] { 0, 1, 1 }, fib, 3);

        for (int i = 0; i < length; i++)
        {
            if(i > 2)
                fib[i] = (int)Math.Round(fib[i-1] * 1.61803399);
            Console.WriteLine(fib[i]);
        }

        return fib;
    }

Kode

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
Sist endret av lor3ntz; 26. juli 2011 kl. 14:38. Grunn: glemte output
▼ ... over en uke senere ... ▼
Da fikk jeg stresset maskinen litt også:

Kode:

Kode

public class Fibonacci {
    public static long fib(int n) {
        if (n <= 1) return n;
        else return fib(n-1) + fib(n-2);
    }

    public static void main(String[] args) {
        int num = 50;
        for (int i = 1; i <= num; i++)
            System.out.println(i + ": " + fib(i));
    }

}
Output (0 -> 50):

Kode

1: 1
2: 1
3: 2
4: 3
5: 5
6: 8
7: 13
8: 21
9: 34
10: 55
11: 89
12: 144
13: 233
14: 377
15: 610
16: 987
17: 1597
18: 2584
19: 4181
20: 6765
21: 10946
22: 17711
23: 28657
24: 46368
25: 75025
26: 121393
27: 196418
28: 317811
29: 514229
30: 832040
31: 1346269
32: 2178309
33: 3524578
34: 5702887
35: 9227465
36: 14930352
37: 24157817
38: 39088169
39: 63245986
40: 102334155
41: 165580141
42: 267914296
43: 433494437
44: 701408733
45: 1134903170
46: 1836311903
47: 2971215073
48: 4807526976
49: 7778742049
50: 12586269025
Sitat av Restyle Vis innlegg
Da fikk jeg stresset maskinen litt også:

Kode:

Kode

public class Fibonacci {
    public static long fib(int n) {
        if (n <= 1) return n;
        else return fib(n-1) + fib(n-2);
    }

    public static void main(String[] args) {
        int num = 50;
        for (int i = 1; i <= num; i++)
            System.out.println(i + ": " + fib(i));
    }

}
Vis hele sitatet...
Kult å herme?
En litt mere kreativ måte og løse dette på,for dem som ikke liker matte

Kode

import urllib,re

#How many fibonacci number 25 50 100 150 200.....
fib_num = 50
site = 'http://www.bigprimes.net/archive/fibonacci/%s'
for i in range(0,fib_num,25):
    url = urllib.urlopen(site % i).read()[0:6000]
    result = [match.group(1) for match in re.finditer(r'\/">(\d+)', url)]
    print result
Output

Kode

['0', '1', '1', '2', '3', '5', '8', '13', '21', '34', '55', '89', '144', '233', '377', '610', '987', '1597', '2584', '4181', '6765', '10946', '17711', '28657', '46368']
['75025', '121393', '196418', '317811', '514229', '832040', '1346269', '2178309', '3524578', '5702887', '9227465', '14930352', '24157817', '39088169', '63245986', '102334155', '165580141', '267914296', '433494437', '701408733', '1134903170', '1836311903', '2971215073', '4807526976', '7778742049']
Sitat av Opous Vis innlegg
Kult å herme?
Vis hele sitatet...
Har faktisk ikke lest gjennom mer enn de første fire-fem forslagene, så det er slettes ikke umulig at det har kommet noe lignende før - spesielt med tanke på at Java er såpass utbredt og måten jeg gjorde det på er temmelig elementær Når jeg først satt og leste til Java eksamen (og rekusjon faktisk er en del av pensum), tok jeg likegreit å smallt sammen noe raskt. Får finne på en mer kreativ variant etter overstått eksamen, inntil den tid må jeg fucke videre med Sockets og JDBC og DEM/MVC ++.
Sist endret av Restyle; 2. august 2011 kl. 18:47.
▼ ... over en uke senere ... ▼
Sitat av djxfade Vis innlegg
Nå vil jeg se noen skrive dette i brainfuck!
Vis hele sitatet...
Får ta utfordringen jeg da, om jeg klarer å forstå meg på dette rare språket.

Kode

+++++Brainfuck+++++[>+++++>+++<<-]>>++<<>--.>.<+.>.<.>.<+.>.<
+.>.<++.>.<+++is.>.<-------.++.>.<-.-.>.<++.+.>.<+..>.<+++.+
.>.<--------.+++.fucked.>.<--.+..>.<.++++..>.<-.-----.-.>.<++
+++++++.-.-.>.<------.up++++.++++.--.>.<-----.+++.+++.---
-.>.<.---.+++++++.-------.!!!>.<+++++.+.-.-.>.<----.-.++++
+++++.-----.++.
Output

Kode

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946
Er ingen matematiske funksjoner i denne, den bare printer tallene et etter et.
Skal prøve å få til en skikkelig en.
Lagde dette i VB en gang for noen år tilbake, skal se om jeg finner det. Riktignok var det, så vidt jeg husker, en kalkulator for Phi med Fibonacci-rekken som basis, men med et par modifikasjoner skal den da produsere rekken.

Tok helt feil, programmet var ikke laget for det i det hele tatt .
Sitat av moridin Vis innlegg
På engelsk, eller Python om du vil:

Kode

a,b = 0,1
for i in range(1,50):
        print a
        a,b = b, a+b
Vis hele sitatet...
Kaster meg på denne, men utvider med standard-modulen "decimal":

Kode

from decimal import *

getcontext().prec = 2500 #Maks antall desimaler

a,b = Decimal(0), Decimal(1)
for i in range(1,10000):
        print a
        a,b = b, a+b
Output:

Kode

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
.
.
.
.
7942451597835212877603685972178130339871923727351742332801121758376921404744710929699316554976719005601449353913544156647514798050636678089226727896749044189109035127132643621359780763299665130924187324835531810548213155773790580546039336312202344371320804638980155201694436255167001794593229047886602016833240206631900232733251067546890736016966442915913590166940162075762676506973143326435702336579051231813657829913296278520982627075346044720041492038091215036699621641668376621103722462659874560920989625860461124255355529458183829231746813313149481311920220766903062961913182301035641657996171176841720210940872251697972185441060448429491075938871146374619876758089506576567994123446471400044700035130919107718466321788074960905257807935281730672915938609092202664630726743708567262968391585571031717692325457602486278819703636773888335032078218891529882437068825613920361138268695415537226810230819772196420815524824890512344473054712429171287931293919386760678905137574958760619839974827765598230755864034556971572296663139861596181605029681551257631174986930074693178605308400724303797452819419859649928418020026730987478028222323685112337079867183071588576567886998051753579778018770729919243976982730243439253606091120124809969110898533940239171249713139652142831657866571905912649593967889572123639232645383189138008351573181429351089762748601034683835411874910042460949064299801788793809076280527242750594993165251632289933437600939164213146398295714381956337158201398776827711884958459006663883803188169231624347509275697713978783014801589022015669237589328791888635521288580434384602457311603702831166979714290588623947802346031360861616412984961613105122172858676166923102214039588384990241476089383173543482523948193038661574217238673916714310875117911516196504083276989156813952694788949869862714731286615245967361671665747526198135106324680981060122606067150471927560715045066892466960470220869514208676444335116397844135708873616335661765966388784357650810083480042174157285876693131921834789506552960387619709697849853677431999157481483883646472067523133763242529094377
12851156639298285194508963016464706485215112366664160786881824108151580018710975719228139479328507509990307989383646001363109996216614295086907082283153693849122754621213591935123410668292259401470232703232278509860511258919672268516629050771105703879599849854360723531531941325680444530280568555848192631424873651999650171347766192834312183926925928026939011480458051478716405316620572103131242812733942433033121260524503006252692752208924615455093172795175162661942390465222979170038150314274206242583967168234187168625210526906534358430922157445387902040757200068671092983745359702599123666544834944170726574748299243105290223161632642782110897999358300261430024773873779583131083756981248889190839294540958075197177097291111564213421048886319166847255131890345454402711674127375341548832584674156400102847228799266974536536214821479509899350282216871229940742827291134503908407655937789076911182619994579822317665398756663476646424096756976960407683203864333982782468618643726346236986115868574217260165389679980270294614941110735757566218703586626924567334253296881133237411381684025512275390763068753534901487363123449060366325529230516461496025654797926535256685374230638070471999827817731160546830845636888945544845702890951759088411260146438722360911145247571740142722617360023628572506832424008564945769953496377325213076247267063213983343847207802717813584548653343648832981334320679079112769325881931610040625051632180272388226841883788324431094419650939177867372485343658626793218311309137706234691718221023310594849628333795898586707635464361149691151005788188357292413937321103250323197560777174351841321360278855378478634068725544232918659819803071386983507166063747567453690351780833706145616828806072613620926438857190639029024372736790739649205053016761755330679939716085671868106634916656771101351634827637128101587414724293131066603823147044161263050273057017868756948233805315140830564210830598544882369143772329659689680193206763021589729329353510232172028230754248549492660220060420898575050174967631334279455256193702309281636610155546262324582771469773408709136249