Partnerzy

Astro-Miejsca


URANIA

astroturystyka

100 lat IAU

IAU

Comet

Centrum Nauki Kepler

Planetarium Wenus

ERC

Centrum Nauk Przyrodniczych

Orion,serwis,astronomii,PTA

POLSA

Astronomia Nova

Astronarium

forum astronomiczne

IPCN

Portal AstroNet

Puls Kosmosu

Forum Meteorytowe

kosmosnautaNET

kosmosnautaNET

Nauka w Polsce

astropolis

astromaniak

PTMA

PTR

heweliusz

heweliusz

ESA

Astronomers Without Borders

Hubble ESA

Space.com

Space Place

Instructables

Tu pełno nauki

Konkursy

Olimpiady Astronomiczne
Olimpiada Astronomiczna przebiega w trzech etapach.
Zadania zawodów I stopnia są rozwiązywane w warunkach pracy domowej. Zadania zawodów II i III stopnia mają charakter pracy samodzielnej. Zawody finałowe odbywają się w Planetarium Śląskim. Tematyka olimpiady wiąże ze sobą astronomię, fizykę i astronomiczne aspekty geografii. Olimpiady Astronomiczne


Urania Postępy Astronomii - konkurs dla szkół


astrolabium

Organizatorem konkursu astronomicznego jest Fundacja dla Uniwersytetu Jagiellońskiego a patronat nad akcją sprawuje Obserwatorium Astronomiczne im. Mikołaja Kopernika będące instytutem Wydziału Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Jagiellońskiego w Krakowie.
Zobacz szczegóły »

astrolabium

konkurs, astronomiczny

AstroSklepy

Serwis Astro - 30 lat AstroDoświadczenia!

Astro Schopy
 Firma ScopeDome

Planeta Oczu

Astrocentrum

Rekurencja w Python'ie i nieszczęśliwy ciąg Fibonacciego

#!/usr/bin/python3
#-------------------------------------------------------------------------------
# Name:        funkcje i rekurencja
# Purpose:     python 3.7 i 3.6
#
# Author:      Jacek Patka
#
# Created:     6-01-2020
# Copyright:   (c) astronom 2020
# Licence:     Jacek Patka - sekcjaastronomiczna@wp.pl
#-------------------------------------------------------------------------------
# -*- coding: UTF-8 -*-

# Źródło http://uoo.univ.szczecin.pl/~jakubs/py/py8.html
# funkcja i argumenty o zmiennej liczbie
#suma argumentów
def sum(*arg):
	s=0
	for x in arg:
		s+=x
	return s

#suma rekurencyjnie
def suma(*n):
        if n:
                return n[0]+suma(*list(n)[1:]) #konwersja na listę, gdyż krotka nie może być przycięta
        else:
                return 0

#silnia liczby n! = (n-1)*n
def silnia(n):
	if n>1:
		return n*silnia(n-1)
	else:
		return 1

# ciąg fibonacciego fibo(50) - nie używaj jej bo liczny strasznie długo
'''fibo(50)
Czekamy, czekamy, a wyniku jak nie było, tak nie ma.
Najsensowniej będzie przerwać działanie funkcji wciskając
kombinację klawiszy CTRL+C.
Dlaczego funkcja liczy tak powoli?
Każde wywołanie funkcji powoduje jej ponowne dwukrotne wywołanie dla n>=2.
A zatem, dla n=50, liczba wywołań funkcji wyniesie około 249 razy.
Nawet jeśli pojedyncze wywołanie funkcji zabiera tylko
jedną dziesięciomilionową sekundy, to wykonanie 249 wywołań zajmie
komputerowi prawie dwa lata.
'''
def fibo(n):
      if n<2:
            return n
      else:
            return fib(n-1)+fib(n-2)

# poprawna funkcja jw.

def fib(n):
      if n<2:
            return n
      a, b = 0, 1             # 0 podstawiamy pod a, 1 pod b
      for x in range(1, n):   # potrzebujemy n-1 iteracji
            a, b = b, a+b     # b podstawiamy pod a, sumę pod b
      return b
Brak komentarzy. Może czas dodać swój?

Dodaj komentarz

Zaloguj się, aby móc dodać komentarz.

Oceny

Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się , żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
31,505,582 unikalne wizyty