Do tail recursion without overflowing with generators and functions.
Project description
Functional Recursion
Do tail recursion without overflowing with generators and functions.
Why?
I am coming from a background of functional programming languages where loops are not standard. Instead, recursion is used to achieve the same result more succinctly.
Overview
It provides:
- Infinite recursion with return
- Infinite recursion with generators (yield)
Using this has the following advantages:
- Allows for more understandable code given the right situation
- Avoid bugs because of deeply nested loops
Instructions
Run in the console
python3 -m pip install functional_recursion
(Use python
or python3
depending on your environment)
And to use it
from functional_recursion import recur, recur_yield, tail_recursive, tail_recursive_yield
@tail_recursive
def fib_decorator_recursive(n, last_two=None):
if last_two is None:
last_two = (0, 1)
if n == 0:
return last_two[1]
last_two = (last_two[1], sum(last_two))
return recur(n - 1, last_two)
@tail_recursive_yield
def fib_decorator_recursive_generator(last_two=None):
if last_two is None:
last_two = (0, 1)
last_two = (last_two[1], sum(last_two))
return recur_yield(last_two, yield_val=last_two[0])
* See the complete examples and performance times here.
Authors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for functional_recursion-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 886610fdaa7bed2adafba45d498eca0b0d428e756c8fc2795eaba76296f09dac |
|
MD5 | b918da3ac48610753fa7e6e09a9b3e2e |
|
BLAKE2b-256 | a4d54575f560be544f10cacd4ae9ae3d499fb32f3060dca0a494a705d5c27696 |
Close
Hashes for functional_recursion-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc087cd2258a7d896b725322d0c77f556d4cfefe722a0c8bbdae10f8082e256d |
|
MD5 | 74112e9e4e6eebc9cdbb544ba2aac116 |
|
BLAKE2b-256 | 1851f908fe0d6ac145e5a6762bcdb93d711d3155670793b4891cde7293696233 |