next up previous contents
suivant: Fonctions récursives terminales monter: Corrigés des programmes précédent: Corrigés des programmes   Table des matières

Fonctions récursives

recursion.c


#include<stdio.h>
#include<stdlib.h>

int addition(int a, int b)
{
    printf("(%d, %d)\n", a, b);
    if (a == 0)
        return b;
    if (a > 0)
        return 1 + addition(a - 1, b);
    return addition(a + 1, b) - 1;
}

int soustraction(int a, int b)
{
    printf("(%d, %d)\n", a, b);
    if (b == 0)
        return a;
    if (b > 0)
        return soustraction(a, b - 1) - 1;
    return soustraction(a, b + 1) + 1;
}

int multiplication(int a, int b)
{
    printf("(%d, %d)\n", a, b);
    if (a == 0)
        return 0;
    if (a > 0)
        return b + multiplication(a - 1, b);
    return multiplication(a + 1, b) - b;
}

int division(int a, int b)
{
    printf("(%d, %d)\n", a, b);
    if (a < 0)
        return - division(-a, b);
    if (b < 0)
        return - division(a, -b);
    if (a < b)
        return 0;
    return 1 + division(a - b, b);
}

int puissance(int a, int b)
{
    printf("(%d, %d)\n", a, b);
    if (b == 0)
        return 1;
    return a * puissance(a, b - 1);
}



klaus 2010-08-05