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
File details
Details for the file functional_recursion-1.0.0.tar.gz
.
File metadata
- Download URL: functional_recursion-1.0.0.tar.gz
- Upload date:
- Size: 3.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 886610fdaa7bed2adafba45d498eca0b0d428e756c8fc2795eaba76296f09dac |
|
MD5 | b918da3ac48610753fa7e6e09a9b3e2e |
|
BLAKE2b-256 | a4d54575f560be544f10cacd4ae9ae3d499fb32f3060dca0a494a705d5c27696 |
File details
Details for the file functional_recursion-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: functional_recursion-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc087cd2258a7d896b725322d0c77f556d4cfefe722a0c8bbdae10f8082e256d |
|
MD5 | 74112e9e4e6eebc9cdbb544ba2aac116 |
|
BLAKE2b-256 | 1851f908fe0d6ac145e5a6762bcdb93d711d3155670793b4891cde7293696233 |