CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Fonctions récursives C

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 20:24:10

:salut:

void debut_fin(int nb_affichages)
{
printf("début %d\n", nb_affichages);
if ( nb_affichages > 1)
{
debut_fin(nb_affichages - 1);
debut_fin(nb_affichages - 1);
}
printf("fin %d\n", nb_affichages);
}

Quelqu´un peut m´expliquer clairement ce que fait ce programme ? Parce qu´on m´a donné ce que ça affichait, mais je vois pas le rapport avec ce qui est écrit ( dans l´exemple nb_affichages = 3).

Affichage :

début 3
début 2
début 1
fin 1
début 1
fin 1
fin 2
début 2
début 1
fin 1
début 1
fin 1
fin 2
fin 3

:merci:

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 22:33:29

:svp: Aidez-moi j´en peux plus là, je me tape la tête contre les murs y´a du sang partout c´est dégueulasse, deux heures que j´essaie de piger cette $*ù!:;@ de récursivité :snif:

Tav
Tav
Niveau 5
26 juin 2005 à 22:37:26

Et moi 2 mois que j´essaie de finir un algo récursif ( va voir le sujet appelé Récursivité).
2 heures c´est pas beaucoup en termes de programamtio.

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 22:39:05

Oui mais moi j´ai même pas compris la récursivité :-d

novembre
novembre
Niveau 18
26 juin 2005 à 23:00:24

Ton programme est tout simple. C´est une fonction qui s´appelle elle même. Elle s´apelle avoir de d´avoir fini son execution. C´est donc pour ca que le " fin 3" se fait tout en dernier.

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 23:01:55

J´ai compris, seulement j´essaie de le faire pas à pas, et je ne comprends pas comment tout ça s´affiche, donc si je pouvais une explication pa à pas :-d

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 23:02:14

avoir* pas*

Chaos_Clad
Chaos_Clad
Niveau 10
26 juin 2005 à 23:24:20

:up:

dnob700
dnob700
Niveau 10
26 juin 2005 à 23:44:33

déjà enlève l´une des lignes
debut_fin(nb_affichages - 1);

elle sers à rien et ça fait que compliquer l´affichage, pour débuter il faut faire simple, donc avec une seul récursivité.

exécute le sans l´une des ligne du milieu, je pense que tu comprendra. Si tu ne comprend pas, re-poste.

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 00:02:27
  1. include < stdio.h>

void debut_fin(int nb_affichages)
{
printf("début %d\n", nb_affichages);
if ( nb_affichages > 1)
debut_fin(nb_affichages - 1);
printf("fin %d\n", nb_affichages);
}

Affichage :

début 3
début 2
début 1
fin 1
fin 2
fin 3

J´ai à peu près compris le principe, mais pourquoi les nombres qui suivent fin sont-ils affichés dans l´ordre inverse de début ?
En fait si j´ai bien compris, quand la fonction réursive s´appelle, elle continue néanmoins de s´exécuter, tout en se réappelant ? Et les valeurs retournées lors de cette éxécutions sont retournées à l´envers ? :doute:

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 00:05:24

Ton site est down dnob, normal ?

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 00:10:43

Oui j´ai compris, les valeurs sont empilées puis désempilées, c´est pour ça ?

MrGoTo
MrGoTo
Niveau 8
27 juin 2005 à 00:17:24

T´as tout compris.

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 00:24:04

Ok mais si c´est ça pourquoi a-t-on 3 fin… puisqu´il ne s´exécute qu´une fois ?

MrGoTo
MrGoTo
Niveau 8
27 juin 2005 à 01:08:50

La fin c´est a chaque fois que tu depiles.

dnob700
dnob700
Niveau 10
27 juin 2005 à 01:27:56

en gros :

la fonction se lance une première fois avec le paramètre 3, elle affiche début 3.

Puis elle s´appelle elle même avec le paramètre 2 et attend, la fin de la fonction qu´elle appelle.

Cette fonction afffiche début 2 et en lance une autre et attend.

Enfin celle là affiche début 1 et comme le paramètre est 1, elle n´appelle pas d´autre fonction et affiche fin 1 puis quitte.

Alors la fonction 2 qui attendait peu continuer : affiché le message fin 2 puis quitter et enfin la fonction 3 qui attendait que la fonction 2 se quitte peut continuer, afficher fin 3 et quitter.

Pour mon site il est pas mort, c´est la redirection qui est naze, il faut cliquer en haut sur le boutons cliquez-ici tout en désactivant son anti-popup.
Je mettrait la véritable adresse.

Chaos_Clad
Chaos_Clad
Niveau 10
27 juin 2005 à 02:09:34

Ok j´ai compris merci :)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment