English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base del linguaggio C

Controllo di flusso del linguaggio C

C 语言函数

C 语言数组

C 语言指针

C 语言字符串

Struttura del linguaggio C

File del linguaggio C

Altri linguaggi C

Manuale di riferimento del linguaggio C

C 语言递归

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.

Come funziona la 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).

Esempio: Somma naturale ricorsiva utilizzando metodi simili.

#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().

递归的优缺点

递归使程序优雅。但是,如果性能至关重要,请使用循环代替,因为递归通常要慢得多。

话虽如此,递归是一个重要的概念。它经常用于数据结构和算法中。例如,在诸如树遍历之类的问题中通常使用递归。