fak.c
author Markus Bröker <mbroeker@largo.dyndns.tv>
Wed, 26 May 2010 14:56:44 +0200
changeset 126 52722ac7693f
parent 80 5d7057a1b202
permissions -rw-r--r--
mysql_db: get not more than num_fields fields from a row I haven't tested the old approach, because i have never installed or used mysql. But it's nice to see that it actually works with this small patch. committer: Markus Bröker <mbroeker@largo.homelinux.org>

/**
 * fak.c
 * Copyright (C) 2008 Markus Broeker
 */

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

unsigned long long fak (short i)
{
    if (i == 0)
        return 1;

    return (i * fak (i - 1));
}

long double bigfak (short i)
{
    if (i == 0)
        return 1;

    return (i * bigfak (i - 1));
}

int main (int argc, char **argv)
{
    short number;

    printf ("Enter a number: ");
    if (scanf ("%hd", &number) != 1) {
        printf ("READ ERROR\n");
        return EXIT_FAILURE;
    }

    if (number < 0 || number > 170) {
        printf ("Range Error: %hd ! {0..170}\n", number);
        return EXIT_FAILURE;
    }

    if (number > 20)
        printf ("The factorial of %2d is %1.5Lg\n", number, bigfak (number));
    else
        printf ("The factorial of %2d is %llu\n", number, fak (number));

    return EXIT_SUCCESS;
}