Skip to content

[Documentation] Add an example for recursion #856

@jan-janssen

Description

@jan-janssen

Serial Recursion

from executorlib import SingleNodeExecutor

def sum_recursive(num):
    if num == 1:  # Base case
        return num
    return num + sum_recursive(num - 1) 

with SingleNodeExecutor() as exe:
    print(exe.submit(sum_recursive, 3).result())

Quicksort

from executorlib import SingleNodeExecutor

def quick_sort(sequence):
    length = len(sequence)
    if length <= 1:
        return {"result": sequence}
    else:
        pivot = sequence.pop() 
    
    greater_items = []
    lesser_items = []

    for item in sequence:
        if item > pivot:
            greater_items.append(item)
        else:
            lesser_items.append(item)

    return {"left": lesser_items, "right": greater_items, "result": [pivot]}

def recusive_submit(function, sequence, executor):
    result_dict = exe.submit(function, sequence).result()
    if "left" in result_dict.keys():
        return recusive_submit(function=function, sequence=result_dict["left"], executor=executor) + result_dict["result"] + recusive_submit(function=function, sequence=result_dict["right"], executor=executor)
    else:
        return result_dict["result"]

with SingleNodeExecutor() as exe:
    print(recusive_submit(function=quick_sort, sequence=[0,9,3,8,2,7,5], executor=exe))

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions