Informatică, întrebare adresată de Glokta, 8 ani în urmă

Subprogramul f este definit alăturat. Valoarea lui f(1234) este:
function f(n:integer):integer;
begin if n<>0 then
f:=(n mod 2)*(n mod 10)+f(n div 10)
else
f:=0
end;


andriesboss92: n <> 0 ??
andriesboss92: adica n diferit de 0 ?

Răspunsuri la întrebare

Răspuns de andriesboss92
3
        Div vine de la divison si inseamna impartire insa mai speciala. O impartire obisnuita in C++ (cu virgula) se face cu semnul "/" insa div inseamna impartire fara virgula ...ex. : 5 div 2= 2  | 7 div 5=1 (adica fara virgula sau rest ..doar partea intreaga).        
        Mod vine de la modulo si in romana inseamna rest..impartire cu rest...de fapt mod va returna numai restul fara partea intreaga.

Ex.: 5 mod =1 | 9 mod 5=4 .        

        Deci x div 10 il va imparti pe x la 10 si va return partea intreaga...iar x mod 10 ve returna restul...       

        Insa aceste doua operatii sunt mai speciale deoarece x div 10 va elimina din x ultima cifra. Ex: 1234 div 10=123 .     
 
        Iar x mod 10 va returna ultima cifra. Ex.: 1234 mod 10=4
------------------------------------------------------------------------------------------------------------
n= 1234
               daca n!=0 
f ( 1234 ) = ( 0 * 4 ) + f ( 123 )
f ( 123 ) = ( 1 * 3 ) + f ( 12 )
f ( 12 ) = ( 0 * 2 ) + f ( 1 )
f ( 1 ) = ( 1 * 1 ) + f ( 0 )
f ( 0 ) : n = 0 deci trece pe ramura else
f ( 0 ) = 0

Reluam:

           daca f ( 0 ) = 0 =>
f ( 1 ) = 0 + 1 = 1
f ( 12 ) = 0 + 1 = 1
f ( 123 ) = 3 + 1 = 4
f ( 1234 ) = 0 + 4 = 4

Raspuns: 4
Alte întrebări interesante