'Initialize parameter in recursive function in Python
I wrote down simple algorithm for checking if Mersenne number is prime:
def is_prime_mers(result, step, modulo):
if result != 0:
if step == 0:
return False
result = result ** 2 - 2
if result >= modulo:
result %= modulo
return is_prime_mers(result, step - 1, modulo)
return True
Generally I don't need to give result parameter when script calls this function however I need it for recursive calls.
So only result need to be initialised for this function with value of 4
I can write some initializing function like:
def is_prime_mers_init(step):
is_prime_mers(4, step, count_mersenne(step))
But maybe there is some python/general programming pattern to do that in first function?
Edit: For all curious ones :) This is function what implements Lucas-Lehmer test and checks if given Mersenne number is prime http://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test - however I read only mathematic implementation - so this is purely my code solution.
step is number of recursive calls
count_mersenne(step) gives value of some Mersenne number: 2 ** step - 1 however I use some check in count_mersenne(step) because searching for prime Mersenne numbers can be limited to prime step values.
Solution 1:[1]
You can assign them dummy default values and then you can decide whether to change them or not, like this
def is_prime_mers(step, result = None, modulo = None):
if result is None:
result = 4 # Default value
if modulo is None:
modulo = count_mersenne(step) # Default value
Or in one liners
def is_prime_mers(step, result = None, modulo = None):
result = 4 if result is None else result
modulo = count_mersenne(step) if modulo is None else modulo
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Ryan M |
