Snowflake og rekursjon¶
Utvidet versjon av forelesers snowflake-funksjon som viser rekursjonsnivåene og depth-verdiene underveis.
>> viser at snowflake har blitt kalt
<< viser at programmet går ut av snowflake
grad av innrykk viser hvilket rekursjonsnivå programmet/funksjonen er på
16.10.2025 Sverre Stikbakke
In [1]:
from turtleplotlib import Turtle
t = Turtle(interactive=False)
<Figure size 500x500 with 0 Axes>
In [2]:
def print_levels(level, depth, desc):
padding = ' ' * 4
print(f"{padding * level}{padding}{desc} {level, depth}")
def snowflake(turtle, depth, level=0):
print_levels(level, depth, ">> level/depth: ")
if depth == 0:
turtle.forward(10)
print_levels(level, depth, "F ")
else:
snowflake(turtle, depth-1, level+1)
turtle.left(60)
print_levels(level, depth, "+ ")
snowflake(turtle, depth-1, level+1)
turtle.right(60)
print_levels(level, depth, "- ")
turtle.right(60)
print_levels(level, depth, "- ")
snowflake(turtle, depth-1, level+1)
turtle.left(60)
print_levels(level, depth, "+ ")
snowflake(turtle, depth-1, level+1)
print_levels(level, depth, "<< level/depth: ")
In [3]:
t = Turtle(interactive=False)
snowflake(t, 0, 0)
>> level/depth: (0, 0)
F (0, 0)
<< level/depth: (0, 0)
In [4]:
t = Turtle(interactive=False)
snowflake(t, 1)
>> level/depth: (0, 1)
>> level/depth: (1, 0)
F (1, 0)
<< level/depth: (1, 0)
+ (0, 1)
>> level/depth: (1, 0)
F (1, 0)
<< level/depth: (1, 0)
- (0, 1)
- (0, 1)
>> level/depth: (1, 0)
F (1, 0)
<< level/depth: (1, 0)
+ (0, 1)
>> level/depth: (1, 0)
F (1, 0)
<< level/depth: (1, 0)
<< level/depth: (0, 1)
In [5]:
t = Turtle(interactive=False)
snowflake(t, 2)
>> level/depth: (0, 2)
>> level/depth: (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
- (1, 1)
- (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
<< level/depth: (1, 1)
+ (0, 2)
>> level/depth: (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
- (1, 1)
- (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
<< level/depth: (1, 1)
- (0, 2)
- (0, 2)
>> level/depth: (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
- (1, 1)
- (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
<< level/depth: (1, 1)
+ (0, 2)
>> level/depth: (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
- (1, 1)
- (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
+ (1, 1)
>> level/depth: (2, 0)
F (2, 0)
<< level/depth: (2, 0)
<< level/depth: (1, 1)
<< level/depth: (0, 2)
In [6]:
t = Turtle(interactive=False)
snowflake(t, 3)
>> level/depth: (0, 3)
>> level/depth: (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
- (1, 2)
- (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
<< level/depth: (1, 2)
+ (0, 3)
>> level/depth: (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
- (1, 2)
- (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
<< level/depth: (1, 2)
- (0, 3)
- (0, 3)
>> level/depth: (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
- (1, 2)
- (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
<< level/depth: (1, 2)
+ (0, 3)
>> level/depth: (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
- (1, 2)
- (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
+ (1, 2)
>> level/depth: (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
- (2, 1)
- (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
+ (2, 1)
>> level/depth: (3, 0)
F (3, 0)
<< level/depth: (3, 0)
<< level/depth: (2, 1)
<< level/depth: (1, 2)
<< level/depth: (0, 3)