English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai a scrivere funzioni ricorsive in C utilizzando esempi di programmazione C.
Il funzionamento che chiama se stesso è chiamato funzionamento ricorsivo e questa tecnica è chiamata ricorsione.
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
La ricorsione continua fino a quando non si soddisfano alcune condizioni per prevenire la ricorsione.
Per prevenire la ricorsione infinita, è possibile utilizzare una chiamata ricorsiva in una branca e non in altre branche del funzionamento.if ... else statement(o metodo simile).
#include <stdio.h> int sum(int n); int main() { int number, result; printf("Inserisci un numero intero positivo: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; } int sum(int n) { if (n != 0) // Chiamata del funzionamento sum() a se stesso return n + sum(n - 1); else return n; }
Risultato di output
Inserisci un numero intero positivo: 3 sum = 6
All'inizio, il funzionamento main() chiama sum() e passa number come parametro.
Supponiamo che l'indicatore iniziale di sum() sia 3. Durante la prossima chiamata del funzionamento, 2 viene passato al funzionamento sum(). Questo processo continua fino a quando n è uguale a 0.
Quando n è uguale a 0, il condizionale if fallisce, esegue la parte else e alla fine restituisce l'intero e al funzionamento main().
递归使程序优雅。但是,如果性能至关重要,请使用循环代替,因为递归通常要慢得多。
话虽如此,递归是一个重要的概念。它经常用于数据结构和算法中。例如,在诸如树遍历之类的问题中通常使用递归。