comp-think/2018-2019

Lecture "Introduction to Computational Thinking", exercise 2

Opened this issue · 11 comments

What is the result of applying the latest natural language definition of the Fibonacci function in Section "Natural languages vs. programming languages" using “7” as input?

Input= 7
Output= (?)

n=7 a=1 b=1 c=2;
n--
n= 6 a=1 b=2 c=3;
n--
n= 5 a=2 b=3 c=5;
n--
n= 4 a=3 b=5 c=8;
n--
n=3 (now I can return "c") a= 5 b=8 C= 13;

Output= 13

The function for calculating the nt​ h Fibonacci number takes as input an integer “n”.
If “n” is less than or equal to 0, then 0 is returned as result.
Otherwise, if “n” is equal to 1, then 1 is returned.
Otherwise, return the sum of the same function with “n-1” as input and still the same function with “n-2” as input.

def Fibo(n): 
    if n<0: 
        return 0 
    elif n==1: 
        return 1
    else: 
        return Fibo(n-1)+Fibo(n-2) 

print(Fibo(7)) 

output: 13

(for code explanation: https://www.geeksforgeeks.org/program-for-nth-fibonacci-number/)

def F(n):
if (n == 0) :
return 0
if (n == 1 or n== 2) :
return 1
else:
return F(n-1)+F(n-2)

print (F(7))

Output: 13

The function for calculating the nt​ h Fibonacci number takes as input an integer “n”.
If “n” is less than or equal to 0, then 0 is returned as result.
Otherwise, if “n” is equal to 1, then 1 is returned.
Otherwise, return the sum of the same function with “n-1” as input and still the same function with “n-2” as input.

def Fibo(n): 
    if n<0: 
        return 0 
    elif n==1: 
        return 1
    else: 
        return Fibo(n-1)+Fibo(n-2) 

print(Fibo(7)) 

output: 13

(for code explanation: https://www.geeksforgeeks.org/program-for-nth-fibonacci-number/)

Add an equal on line 2 ("if n is less than or equal to 0 [...]").
if n <= 0:
Also, maybe is not clear to everyone that is written in Python.
Good job!

The function for calculating the n-th Fibonacci number takes as input an integer “n”.
If “n” is less than or equal to 0, then 0 is returned as result.
Otherwise, if “n” is equal to 1, then 1 is returned.
Otherwise, return the sum of the same function with “n-1” as input and still the same function with “n-2” as input.

def F(n):
if (n <= 0) :
return 0
if (n == 1 or n== 2) :
return 1
else:
return F(n-1)+F(n-2)

F(7) = 13
The logic behind this result is the following:

F(7) = F(6) + F(5) = 8 + 5 = 13
F(6) = F(5) + F(4) = 5 + 3 = 8
F(5) = F(4) + F(3) = 3 + 2 = 5
F(4) = F(3) + F(2) = 2 + 1 = 3
F(3) = F(2) + F(1) = 1 + 1 = 2
F(2) = F(1) + F(0) = 1 + 0 = 1
F(1) = 1
F(0) = 0

a = 1;
b = 1;
while (1) { c = a + b; }
if (n <= 3)
return c;
a = b;
b = c;
{ c = a + b; }
n--; (which means to subtract 1)

Input = 7

n= 7 a= 1 b= 1 c = 2
n-- (subtract one)
n=6 (n <= 3 so return c)
n= 6 a= 1 b= 2 c = 3
n--
n= 5
n= 5 a= 2 b= 3 c = 5
n--
n= 4
n= 4 a= 3 b= 5 c = 8
n= 3
n= 3 a= 5 b= 8 c = 13

{ c = a + b; } So the output is 13.

Input= 7

If (n <=0)
then return 0
If (n <=2)
then return 1
If (n <=3)
then return c

а=1
b=1
c=a+b

a=b
b=c

If n=7 a=1 b=1 c=2;

then n--

If n n= 6 a=1 b=2 c=3;

then n--

If n= 5 a=2 b=3 c=5;

then n--
If n= 4 a=3 b=5 c=8;

then n--

If n=3 a= 5 b=8 C= 13;
then return 13
Output 13

The function for calculating the nth Fibonacci number takes as input an integer “n”. If “n” is less than or equal to 0, then 0 is returned as result. Otherwise, if “n” is equal to 1, then 1 is returned.
Otherwise, return the sum of the same function with “n-1” as input and still the same function with “n-2” as input.

input=7
a=1
b=1
c=(a+b)

If n=7 a=1 b=1 c=2;
n-- (subtract 1)
If n=6 a=1 b=2 c=3;
n--
If n=5 a=2 b=3 c=5;
n--
If n=4 a=3 b=5 c=8;
n--
If n=3 a=5 b=8 c=13;
then return c
output=13

A return statement in a while loop is equal to a break statement. Hence, as soon as n <= 3 the return function is trigged and the while loop stops. Based on this, the while loop stops as soon as n was reduced to 3 by n--. The loop runs a total of 5 times. During the last run, it returned c = 13.

n = 7 —> a = 1, b = 1 —> c = a + b = 2 —> 
a = b = 1, b = c = 2 —> n = 7 - 1 = 6 —> c = a + b = 3 —> 
a = b = 2, b = c = 3 —> n = 6 - 1 = 5 —> c = a + b = 5 —> 
a = b = 3, b = c = 5 —> n = 6 - 1 = 4 —> c = a + b = 8 —> 
a = b = 5, b = c = 8 —> n = 6 - 1 = 3 —> c = a + b = 13 —> c = 13

n=7 a=1 b=1 c=2
n--
n=6 a=1 b=2 c=3
n--
n=5 a=2 b=3 c=5
n--
n=4 a=3 b=5 c=8
n--
n=3 a=5 b=8 c=13
if “n” is less than or equal to “3” then return “c”
Output=13

Input= 7
Output= (?)

n=7 a=1 b=1 c=2;
n--
n= 6 a=1 b=2 c=3;
n--
n= 5 a=2 b=3 c=5;
n--
n= 4 a=3 b=5 c=8;
n--
n=3 (now I can return "c") a= 5 b=8 C= 13;

Output= 13

So, F(3) in Fibonacci's sequence is the key to find the output for any input number!