Diferència entre revisions de la pàgina «M3 - Programació estructurada / Exercicis UF2: Recursivitat bàsics»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 28: Línia 28:
 
</source>
 
</source>
  
Quina seria la sortida si executéssim p1(6) ?
+
Quina seria la sortida si executéssim '''p1(6)'''?
  
  
Línia 54: Línia 54:
 
</source>
 
</source>
  
Quina seria la sortida si executéssim p2(10,8) ?
+
Quina seria la sortida si executéssim '''p2(10,8)'''?
 +
 
 +
3)
 +
<source lang="java">
 +
void p3(int a, int b ){
 +
  if (a > 0){
 +
      p3(a-1,b+a);
 +
  }
 +
  else
 +
  {
 +
      System.out.print(b+” “);
 +
  }
 +
}
 +
</source>
 +
 
 +
Quina seria la sortida si executéssim '''p3(5,3)'''?
 +
 
 +
Quina seria la sortida si eliminéssim el '''else''' ( fent sempre el print ) i des del programa principal féssim:
 +
<source lang="java">
 +
for (int i=1;i<=5;i++){
 +
  System.out.print (“p3 (“+ i+”):”);
 +
  p3 (i,0);
 +
}
 +
</source>
 +
 
 +
4a)
 +
<source lang="java">
 +
void p4 ( int a) {
 +
  if (a> 0) {
 +
      p4(a-1);
 +
      System.out.print(a+” “);
 +
  }
 +
  else {
 +
      System.out.print(”fi? “);
 +
  }
 +
}
 +
</source>
 +
4b)
 +
<source lang="java">
 +
void p4 ( int a) {
 +
  if (a> 0) {
 +
      p4(a-1);
 +
      System.out.print(a+” “);
 +
  }
 +
  System.out.print(”fi? “);
 +
}
 +
</source>
 +
 
 +
Quina seria la sortida si executéssim '''p4(5)'''?
 +
 
 +
5)
 +
<source lang="java">
 +
void p5( int a ) {
 +
  if (a>0 {
 +
      System.out.print(a+” “);
 +
      a=a-1;
 +
      p5(a);
 +
  }
 +
  System.out.print(a+” “);
 +
}
 +
</source>
 +
 
 +
Quina seria la sortida si executéssim '''p5(5)'''?
 +
 
 +
6)
 +
<source lang="java">
 +
void p6(int a ){
 +
  System.out.print(a+” “);
 +
  for ( int i =a; i>0;i--){
 +
      p6(i-1);
 +
  }
 +
}
 +
</source>
 +
 
 +
Quina seria la sortida si executéssim '''p6(4)'''?
 +
 
 +
7)
 +
<source lang="java">
 +
int f1 ( int a ) {
 +
  int f;
 +
  if ( a>0) f= f1(a-1) + 1;
 +
  else f=0;
 +
  return f;
 +
}
 +
</source>
 +
 
 +
Que retornaria '''f1(10''')?
 +
 
 +
8 )
 +
<source lang="java">
 +
int f2 ( int a ) {
 +
  int f;
 +
  if ( a>0) f= f2(a-1) + a;
 +
  else f=0;
 +
  return f;
 +
}
 +
</source>
 +
 
 +
Que retornaria '''f2(10)'''?
 +
 
 +
9)
 +
<source lang="java">
 +
int f3 ( int a ) {
 +
  int r,i,f;
 +
  if (a>0) {
 +
      r=a;
 +
      for ( i= a-1;i>0;i--){
 +
        r= r + f3(i);
 +
      }
 +
      f=r;
 +
  }
 +
  else f=a;
 +
  return f;
 +
}
 +
</source>
 +
 
 +
Què retorna '''f3(6)'''?
 +
 
 +
Trobar el cas general (què fa la funció) i escriure-la d’una altra forma més senzilla
 +
 
 +
10)
 +
<source lang="java">
 +
int f4( int x ){
 +
  int f;
 +
  if (x> 100)  f=x-10;
 +
  else f= f4(f4(x+11));
 +
  return f;
 +
}
 +
</source>
 +
 
 +
Què retorna '''f4(100)''', i '''f4(0)'''? Fer el programa més senzill.

Revisió de 19:16, 5 maig 2018

Indicar quina serà la sortida dels procediments següents:

1a)

void p1( int a ) {
   if (a>0) {
      System.out.print(a+” “);
      p1(a-1);
   }
   else {
      system.out.print(“final”)
   }
}

1b)

void p1( int a ) {
   if (a>0) {
     System.out.print(a+” “);
     p1(a-1);
   }
   else {
     System.out.print(“final”)
   }
   System.out.print(a+” “);
   System.out.print(”final de veritat “);
}

Quina seria la sortida si executéssim p1(6)?


2a)

void p2( int a , int b) {
   if (a%b!=0) {
      System.out.print(a+” “);
      p2(a+1,b);
   }
   else {
      System.out.print(“final”);
   }
}

2b)

void p2( int a , int b) {
   if (a%b!=0) {
      System.out.print(a+” “);
      p2(a+1,b);
   }
   System.out.print(“final”);
}

Quina seria la sortida si executéssim p2(10,8)?

3)

void p3(int a, int b ){
   if (a > 0){
      p3(a-1,b+a);
   }
   else
   {
      System.out.print(b+” “);
   }
}

Quina seria la sortida si executéssim p3(5,3)?

Quina seria la sortida si eliminéssim el else ( fent sempre el print ) i des del programa principal féssim:

for (int i=1;i<=5;i++){
   System.out.print (“p3 (“+ i+”):”);
   p3 (i,0);
}

4a)

void p4 ( int a) {
   if (a> 0) {
      p4(a-1);
      System.out.print(a+” “);
   }
   else {
      System.out.print(”fi? “);
   }
}

4b)

void p4 ( int a) {
   if (a> 0) {
      p4(a-1);
      System.out.print(a+” “);
   }
   System.out.print(”fi? “);
}

Quina seria la sortida si executéssim p4(5)?

5)

void p5( int a ) {
   if (a>0 {
      System.out.print(a+” “);
      a=a-1;
      p5(a);
   }
   System.out.print(a+” “);
}

Quina seria la sortida si executéssim p5(5)?

6)

void p6(int a ){
   System.out.print(a+” “);
   for ( int i =a; i>0;i--){
      p6(i-1);
   }
}

Quina seria la sortida si executéssim p6(4)?

7)

int f1 ( int a ) {
   int f;
   if ( a>0) f= f1(a-1) + 1;
   else f=0;
   return f;
}

Que retornaria f1(10)?

8 )

int f2 ( int a ) {
   int f;
   if ( a>0) f= f2(a-1) + a;
   else f=0;
   return f;
}

Que retornaria f2(10)?

9)

int f3 ( int a ) {
   int r,i,f;
   if (a>0) {
      r=a;
      for ( i= a-1;i>0;i--){
         r= r + f3(i);
      }
      f=r;
   }
   else f=a;
   return f;
}

Què retorna f3(6)?

Trobar el cas general (què fa la funció) i escriure-la d’una altra forma més senzilla

10)

int f4( int x ){
   int f;
   if (x> 100)  f=x-10;
   else f= f4(f4(x+11));
   return f;
}

Què retorna f4(100), i f4(0)? Fer el programa més senzill.