Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
problema recursivitate
Last Updated: Apr 13 2017 20:51, Started by
roby26
, Apr 11 2017 16:39
·
0
#1
Posted 11 April 2017 - 16:39
Buna ziua!
As dori sa imi explice cineva urmatorul exercitiu,ce se afiseaza,stiu ca este banal..dar sunt la inceput,si nu inteleg chiar bine recursivitatea. void f(long n){ if (n!=0){ if (n%2!=0) cout<<n%10; f(n/10); if (n%2==0) cout<<n%10; } else cout<<endl; } Multumesc anticipat! |
#2
Posted 11 April 2017 - 16:53
Ce se afiseazi afli compiland & ruland codul.
De ce se afiseaza ce se afiseaza, afli usor, in mod vizual, urmarind pas-cu-pas executia programului in debugger. |
#4
Posted 11 April 2017 - 18:13
Să înțeleg că ai urmat sfatul și nu ai obținut nici un rezultat. Spune în două coloane ce ai înțeles, și ce nu ai înțeles.
|
#5
Posted 11 April 2017 - 23:17
#include "stdafx.h" #include <iostream> using namespace std; void f(long n) { // functia f cu parametrul n if (n != 0) { // daca nu este egal cu 0 //////CAZ CONCRET n=91 if (n % 2 != 0) // daca restul imaprtirii lui n la 2 nu este egal cu 0 //////CAZ CONCRET : restul impartirii lui 91 la 2 este 1. cout << n % 10; // se afiseaza restul impartirii lun n la 10 //////CAZ CONCRET -aici afiseaza restul impartirii 91 la 10, acesta fiind 1. 9x10=90 rest 1 f(n / 10); //apoi se executa aceeasi funtie dar n se imparte la 10 //////CAZ CONCRET - deci se executa tot functia f dar cu parametrul 9, pentru ca 91 impartit la 10 este 9,1 dar numarul n fiind de tip long, adica fara virgula, ramane doar partea intreaga adica 9 si se executa f(9); //////CAZ CONCRET - continuam de la primul if, n fiind acum 9. Daca n nu este egal cu 0 se execut urmatorul if. Nu este, este 9. /////// (al doilea if) daca restul impartirii lui n la 2 nu este 0 se tipareste restul impartirii lui n la 10. 9/10=0,9 adica 0 rest 9, /////// asa ca se afiseaza langa 1 afisat mai inainte 9 si o sa ai pe ecran 19. if (n % 2 == 0) cout << n % 10 <<endl; } else cout << endl; } int main() { f(91); system("Pause"); return 0; } Nu stiu eu sa explic foarte bine dar ruleaza in bucla pana nu mai sunt indeplinite conditiile. Citeste comentariile de pe cod, in special unde scrie CAZ CONCRET, pentru ca este un exemplu si se intelege mai bine. Edited by Daniel2222, 11 April 2017 - 23:23. |
#6
Posted 11 April 2017 - 23:50
Quote // daca restul imaprtirii lui n la 2 nu este egal cu 0 |
#7
Posted 12 April 2017 - 21:05
nu ai tu idee ce ma doare!
daca ai ceva de reprosat poti sa formulezi si mai frumos nu te gandi ca i-am raspuns initiatorului pentru a-ti face tie in ciuda! pentru ce era nevoie sa-mi analizezi mie durerile...? Edited by Daniel2222, 12 April 2017 - 21:06. |
#8
Posted 12 April 2017 - 22:57
Da, pentru ca n-am inteles exact cand
Quote
// daca restul imaprtirii lui n la 2 nu este egal cu 0 /////// (al doilea if) daca restul impartirii lui n la 2 nu este 0 se tipareste restul impartirii lui n la 10 Dar trecem si peste asta, te intreb pe tine, cand anume se excuta al doilea if ? void f(long n) { if (n != 0) // numar nenul { if (n % 2 != 0) // numar impar { cout << n % 10; // se afiseaza ultima cifra } f(n / 10); // functia se apeleaza pe sine cu 1/10 din numar if (n % 2 == 0) // numar par { cout << n % 10; } } else { // numar nul cout << endl; // functia se termina } } Edited by MarianG, 12 April 2017 - 23:16. |
#9
Posted 13 April 2017 - 20:51
dani.user, on 11 aprilie 2017 - 16:53, said:
De ce se afiseaza ce se afiseaza, afli usor, in mod vizual, urmarind pas-cu-pas executia programului in debugger. https://forum.softpe...recursivitatea/ |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users