Cosa stampa il seguente programma?
#include int mistero(int m, int n) { if(m == 0) return n; else if(n == 0) return mistero(m-1, 1); else return mistero(mistero(m-1, n-1), n-1); } int main() { printf("%d %d %d %dn", mistero(0,3), mistero(1,3), mistero(2,3), mistero(3,3)); return 0; }Risposte:
- 3 1 2 0
- 3 2 1 0
- 0 1 2 3
- Nessuna delle precedenti
Soluzione: a (3 1 2 0)
Compila la tabella (con molta attenzione…)
m/n |
0 | 1 | 2 | 3 |
0 | m(0,0) 0 |
m(0,1) 1 |
m(0,2) 2 |
m(0,3) 3 |
1 | m(1,0) m(0,1) 1 |
m(1,1) m(m(0,0),0) m(0,0) 0 |
m(1,2) m(m(0,1),1) m(1,1) 0 |
m(1,3) m(m(0,2),2) m(2,2) 1 |
2 | m(2,0) m(1,1) 0 |
m(2,1) m(m(1,0),0) m(1,0) 1 |
m(2,2) m(m(1,1),1) m(0,1) 1 |
m(2,3) m(m(1,2),2) m(0,2) 2 |
3 | m(3,0) m(2,1) 1 |
m(3,1) m(m(2,0),0) m(0,0) 0 |
m(3,2) m(m(2,1),1) m(1,1) 0 |
m(3,3) m(m(2,2),2) m(1,2) 0 |