Download presentation
Presentation is loading. Please wait.
Published bySophie Miles Modified over 9 years ago
1
PPT3
2
Quick function: Write a function that checks to see if a number is even or not. What TYPE does this return?
3
Boolean Values We now know functions can return: Numbers (int, double) Strings True or False ? AKA Boolean Values Yes, No 1, 0 We can use True and False as if they are a type) E.g., return(True)
4
def ismultof3(x): if ((x%3) == 0): return(True) else: return(False) When python executes the following statement, what is the result? (x%3)==0 def ismultof3(x): return((x%3) == 0) def func2(x): if (ismultof3(x)): # Can we see why specifying what type # is returned from a function is critical?!? return(str(x) + " is a multiple of 3") else: return(str(x) + " is not a multiple of 3")
5
Returning to Boolean Values: Quadratic Equation: x 2 - 3x – 4 = 0 Is this true for 1? 2? 3? 4? Can you write a function that returns the answer to this question? Hint: the function needs to return a boolean value. What is the input? How do you check for the output?
6
Function to represent this: #Name: eqcheck #Calculation: Determines if input value (x) will solve #the problem: # x 2 - 3x – 4 = 0 #Input: x: a number #Output: a boolean value def eqcheck(x): return (x**2 – 3*x – 4) == 0 What is returned? print(eqcheck(3)) What is returned? print(eqcheck(4))
7
Remember? def Squr(par1): return(par1 ** 2) def dbl(par2): return(par2 + par2) def Func4(p1,p2): return(dbl(Squr(p2)+ Squr(p2)+3)) print(Func4(2,4)) def Func5(p1): return(dbl(dbl(dbl(p1)))) print(Func5(4))
8
What gets printed out? def f(n): if (n == 0): return (" ") else: print(“blug ") return f(n-1) f(3)
9
What about? def f(x): if (x == 0): return x else: return(x + f(x-1)) print(f(4)) def f2(x): if (x == 1): return (str(x)) else: return(str(x) + f2(x-1)) print(f2(4))
11
Recursion (one of 3 types of loops) Recursion is when a function is defined in terms of itself (it calls itself). Def: A recursive definition is one that defines something in terms of itself (that is, recursively) Recursion is, in essence, making a function happen again and again without our having to call it (convenient, huh?) It is one of 3 types of loops we will learn all do the same thing, just different syntax) #This is recursion def recurse(): return(recurse()) #This isn’t def nonrecurse(): return(“nope”)
12
Try: def f(x): return(x + f(x-1)) print(f(4)) def f2(x): if (x == 1): return x else: return(x + f2(x+1)) print(f2(4)) def f3(x): if (x == 1): return x else: return(x + f3(x-2)) print(f3(4))
13
How about: def f(x): if x == 100: return(“none") else: if (x**2 - 3 *x - 4) == 0: print(str(x) + " solves the equation ") return(f(x+1)) print(f(-100))
14
Loop Essentials We now have the basics: 1. Must formulate a problem in terms of itself. (Recursion: the function must call itself) 2. Must include a condition for stopping the recursion (base case) 3. Must make sure that we will always hit that stopping condition.
15
Sum numbers (1-5) def summing(x): 1. If we start by calling the function with 1, when should we stop? if (x >= 5): # must return something that does not make the loop happen again!!!!! return(x) #why x? Assume the smallest case possible: Summing one number. No matter what the number is, if you are summing that number and that number only, you want to return that number. Alt: if we start summing 1-5 by calling the function with 5, when should we stop? if (x <= 1): return(x) Note: Sometimes we can have MORE THAN ONE stopping condition (you only have to make one of them happen)
16
Sum numbers (1-5) def summing(x): 1. Stopping Condition? if (x >= 5): return(x) 2. How do we make sure that we get to the stopping condition? Increase x every time we “loop” E.g., summing(x+1) Alternative: summing(x-1) If we do these two things, we will likely avoid an infinite loop
17
Sum numbers 1-5 (cont.) def summing(x): 1. Stopping condition if (x >= 5): return (x) 2. Progressing towards stopping condition: summing(x+1) 3. Finally, we need to write our function: Pretend there are only 2 cases – the last case (step 1, above) and the case right before that. (e.g., summing 4-5) We want to return(x + summing(x+1)), right? From step 1 we know summing (x+1) returns 5 And we know x holds 4. So summing(4) returns 9 Now what if we summed from 3-5? Can we use what we just did?
18
Sum Numbers 1-5 (cont.) Put it all together: def summing(x): if (x >= 5): return(x) else: return(x + summing(x+1)) print(summing(1))
19
Let’s try : 1. Write a recursive function that creates a string of every other number starting at 1 and ending at 10 2. Write a recursive function that sums every other number between two integers (you can assume the second integer is greater than the first integer) 3. Write a recursive function that counts the number of numbers that is evenly divisible by 3 between x and y
20
Problem 1:Write a recursive function that prints out every other number starting at 1 and ending at 10 def g(x): if x == 10: return(str(x)) elif x > 10: return() else: return(str(x) + g(x+2)) print(g(1))
21
Problem 2: Write a recursive function that sums every other number between two integers def g(x,y): if x == y: return(x) elif x > y: return() else: return(x + g(x+2)) print(g(3,12))
22
Problem 3: Write a recursive function that counts the number of numbers that is evenly divisible by 3 between x and y def h(x,y): if x >=y: return(0) elif x%3 == 0: return (1 + h(x + 1,y)) else: return(h(x+1,y)) print(h(3,28)) Same? def h(x,y,z): if x >=y: return(z) elif x%3 == 0: return (h(x + 1,y,z+1)) else: return(h(x+1,y,z)) print(h(3,28,0))
23
Let’s try : 1. Write a recursive function that calculates x to the yth power, assuming we’ve only got multiplication (i.e., you can’t use **) 2. Write a recursive function that determines whether a number is prime or not (and returns True if it is, and False if it isn’t)
24
Problem 3: Write a recursive function that finds x to the yth power, assuming we’ve only got multiplication (i.e., you can’t use **) def k(x,y): if y == 0: return(1) else: return(x * k(x,y-1)) print(k(3,4)) print(k(2,4)) Same? def k(x,y): if y == 0: return(x) else: return( k(x*x,y-1)) print(k(3,4)) print(k(2,4)) Now? def k(x,y,z): if y == 0: return(z) else: return( k(x,y-1,z*x)) print(k(3,4,___)) print(k(2,4,___)) What does z need to start at?
25
Write a recursive function that determines whether a number is prime or not (and returns True if it is, and False if it isn’t) def f(x,y): if (y>(x//2)): return(True) elif (x%y==0): print(y) return(False) else: return (f(x,y+1)) print(f(6,2)) print(f(137,2)) print(f(55,2)) print(f(29,2)) def f(x,y): if (y>(x//2)): return(True) else: return (x%y!=0 and f(x,y+1)) print(f(6,2)) print(f(137,2)) print(f(55,2)) print(f(29,2))
26
Lab cheat sheet Random numbers: from random import * #imports the random library, including all the functions to generate random numbers And then x=randrange(1,10) #x now holds a number between 1 and 9 (doesn’t include 10) Example: from random import * import turtle def f(x): if (x == 5): return("Done") else: x = randrange(0,10) print("the random number is " + str(x)) return(f(x)) print(f(10))
27
Turtle colors cheat sheet: Colors in turtle are represented with r g b values (red,green, and blue). Each value should be between 0 and 1. So.9,.1,.1 will be pretty red, whereas .9,.1,.9 will be purple. To use colors in turtle: from random import * import turtle def f(x,r,g,b): if (x == 0): return("Done") else: r = randrange(0,100)/100 g = randrange(0,100)/100 b = randrange(0,100)/100 turtle.color(r,g,b) turtle.circle(10) turtle.penup() turtle.goto(randrange(0,100),randrange(0,100)) turtle.pendown() return(f(x-1,r,g,b)) print(f(10,.5,.5,.5))
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.