Ruby fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.4 KiB

4 years ago
  1. ## 4 Fibonaccin lukusarja
  2. **Tehtävä:**
  3. Luvun neljännessä tehtävässä toteutetaan Fibonaccin lukusarjaa laskeva ohjelma.
  4. Fibonaccin lukusarja on matemaattinen sarja, jossa sarjan seuraava luku on kahden edellisen luvun summa, eli uusi luku = edellinen luku + toiseksi uusin. Lukusarja menee siis seuraavalla tavalla: 0 1 1 2 3 5 8 13 21 ... jne.
  5. Tehtävänäsi onkin rakentaa ohjelma, joka laskee käyttäjälle lukusarjaa eteenpäin. Lähtötietona ohjelmalle voidaan kerta ensimmäiset kaksi lukua, 0 ja 1. Tämän jälkeen ohjelma kysyy "Montako kierrosta lasketaan?: ", ja tulostaa Fibonaccin lukusarjan lukuja annetun määrän muodossa "Seuraava Fibonaccin luku on [vastaus]".
  6. Toimiessaan oikein ohjelma tulostaa seuraavaa:
  7. Example output:
  8. ```
  9. Montako kierrosta lasketaan?: 5
  10. Seuraava Fibonaccin luku on 1.
  11. Seuraava Fibonaccin luku on 2.
  12. Seuraava Fibonaccin luku on 3.
  13. Seuraava Fibonaccin luku on 5.
  14. Seuraava Fibonaccin luku on 8.
  15. ```
  16. **Vastaus**
  17. ```
  18. #!/usr/bin/env ruby
  19. # coding: utf-8
  20. i = 0; lukutmp = 0; fibonacci = [0,1]
  21. begin
  22. print "Montako kierrosta lasketaan?: "
  23. kierrokset = Integer(gets.strip.chomp)
  24. rescue ArgumentError
  25. warn "Syötä kokonaisluku"
  26. retry
  27. end
  28. while i < kierrokset
  29. lukutmp = fibonacci[1]
  30. i += 1
  31. puts "Seuraava Fibonaccin luku on #{fibonacci[0] + fibonacci[1]}."
  32. fibonacci[1] = lukutmp + fibonacci[0]
  33. fibonacci[0] = lukutmp
  34. end
  35. ```