C рекурсивное
Рекурсии относится к определению метода функции, используемой в самой функции.
Например:
Был когда-то гора, гора был храм, храм имеет старый монах, рассказывал истории молодым монахом это! Какая история это? "Там был когда-то гора, гора был храм, храм имеет старый монах, рассказывал истории молодым монахом он! Какая история это?" Был когда-то гора, гора был храм, храм имеет старый монах, является история для молодого монаха это! Какая история это? ...... ''
Синтаксис выглядит следующим образом:
void recursion() { recursion(); /* 函数调用自身 */ } int main() { recursion(); }
языка C поддержка рекурсии, то есть, функция может вызывать саму себя. Тем не менее, при использовании рекурсии, программист должен отметить, что определение функции выходит из условий, в противном случае он будет идти в бесконечный цикл.
Рекурсивные функции в решении многих математических задач сыграли решающую роль, например, при расчете факториала числа, генерировать числа Фибоначчи, и так далее.
Количество факториала
В следующем примере используется рекурсивную функцию для вычисления факториала заданного числа:
#include <stdio.h> double factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 15; printf("%d 的阶乘为 %f\n", i, factorial(i)); return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:
15 的阶乘为 1307674368000.000000
число Фибоначчи
Фибоначчи В следующем примере используется рекурсивную функцию для генерации заданного числа столбцов:
#include <stdio.h> int fibonaci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonaci(i-1) + fibonaci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d\t%n", fibonaci(i)); } return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:
0 1 1 2 3 5 8 13 21 34