import math
import time

zahl = 2        # Zahl deren Quadratwurzel bestimmt werden soll
folgeng = 20    # Festes Start-Folgenglied
nks = 16        # Nachkommerstelle auf dei gerundet werden soll


def heron(a,n):

    """
    Rekursive Funktion zur Bestimmung der Quadratwurzel
    """

    global anz    # Anzahl der Aufrufe
    """
    global startz 
    global endz"""


   # startz = time.time()




    if n == 1:

        result = (a + 1) / 2



    else:

        x = heron(a, n - 1)    # Rekursiver Aufruf der Funktion heron(a,n)

        result = (x + a / x) / 2

        anz +=1


    #end = time.time()

    return result


anz = 0
abw = (math.sqrt(2) - heron(zahl,folgeng))

print ('Die Wurzel von ', zahl ,' ist: ', round((heron(zahl,folgeng)),nks))

print ('Die Abweichung beträgt: ', abw)

anz = 0
heron(zahl, folgeng)
print ('Die Anzahl der Rechenschritte beträgt: ', anz)

startz = time.time()
heron(zahl, folgeng)
endz = time.time()


print ('Prozesszeit:', endz - startz ,'s')  # Die time.time() Methode scheint zu ungenau für diese Messung.

print ('Wurzel von', zahl ,'ungerundet', heron(zahl, folgeng))

input()
