محاسبهٔ فاکتوریل با استفاده از بازگشت (Recursion)

به کد زیر دقت کنید:

#include <stdio.h>

int fact(unsigned int);

int main()
{
    printf("%d\n", fact(5));
    return 0;
}

int fact(unsigned int n)
{
    // stop condition
    if(n == 0 || n == 1) return 1;

    return n * fact(n - 1);
}

در کد بالا فاکتوریل عدد ۵ با استفاده از تابع fact که بصورت بازگشتی عمل می‌کند، چاپ می‌شود. خروجی برنامهٔ بالا عدد ۱۲۰ است. در توابع بازگشتی و یا حلقه‌ها حتما باشد یک شرط توقف (Stop Condition) وجود داشته باشد، وگرنه بازگشت یا چرخش حلقه تا بی‌نهایت تکرار می‌شود. در کد بالا اگر n برابر با صفر یا یک شود، بازگشت متوقف می‌شود.