توابع بازگشتی در زبان C
توابع بازگشتی به توابعی گفته می شود که در داخل خودش، خودش را فراخوانی کند. برای درک بهتر به مثال زیر توجه کنید:
1 2 3 4 5 6 | void recursion() { recursion(); /* function calls itself */ } int main() { recursion(); } |
توابع بازگشتی برای حل بسیاری از مسائل ریاضی مانند محاسبه فاکتوریل یک عدد، تولید سری فیبوناچی، و غیره بسیار مفید هستند.
محاسبه فاکتوریل به صورت بازگشتی
مثال زیر با استفاده از تابع بازگشتی فاکتوریل یک عدد را محاسبه می کند:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> unsigned long long int factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 12; printf("Factorial of %d is %d\n", i, factorial(i)); return 0; } |
زمانی که کد بالا توسط کامپایلر زبان C و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Factorial of 12 is 479001600 |
محاسبه سری فیبوناچی به صورت بازگشتی
مثال زیر، با استفاده از تابع بازگشتی سری فیبوناچی یک عدد را تولید می کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int fibonacci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonacci(i-1) + fibonacci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d\t\n", fibonacci(i)); } return 0; } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 3 4 5 6 7 8 9 10 | 0 1 1 2 3 5 8 13 21 34 |
هیچ نظری ثبت نشده است