Main.Recursion History

Hide minor edits - Show changes to markup

March 07, 2010, at 06:40 PM MST by 71.196.160.210 -
Added lines 1-65:

(:source lang=python:)

"""A simple example of a recursive function"""

def print_stars(n) :

    if (n == 1) :
        # base case - print one star
        print '*'
    else :
        # recursive case - print one more star
        print '*',
        print_stars(n - 1)
  1. here's a version with an even simpler base case

def print_stars2(n) :

    if (n == 0) :
        # base case - end the line of input
        print
    else :
        # recursive case; print one more star
        print '*',
        print_stars2(n - 1)

(:sourceend:)

(:source lang=python:)

"""Recursive functions for computing x^n"""

  1. first a non-recursive function:

def pow_iterative(x, n) :

    product = 1
    for i in range(n) :
        product = product * x
    return product
  1. a recursive function for computing x^n:

def pow(x, n) :

    """Returns x^n"""
    if n == 0 :
        # base case; any number to 0th power is 1
        return 1
    else :
        # recursive case:  x^n = x * x^(n-1)
        return x * pow(x, n-1)

def pow_no_base(x, n) :

    return x * pow_no_base(x, n-1)

def pow2(x, n) :

    if n == 0 :
        # base case; any number to 0th power is 1
        return 1
    elif n % 2 == 0 :
        # recursive case 1:  x^y = (x^2)^(n/2)
        return pow(x * x, n / 2)
    else :
        # recursive case 2:  x^n = x * x^(n-1)
        return x * pow(x, n - 1)

(:sourceend:)