#include <iostream>
using namespace std;
int factorial(int n){
int sum = 1;
for (int i = 1; i <= n; ++i){
sum = sum*i;
}
return sum;
}
int main(){
cout << factorial(1) << endl;
cout << factorial(2) << endl;
cout << factorial(3) << endl;
cout << factorial(4) << endl;
cout << factorial(5) << endl;
cout << factorial(6) << endl;
}
La recursivitat és un concepte fonamental en informàtica i matemàtiques, que permet resoldre problemes mitjançant la definició d’una solució en termes de si mateixa. En programació, una funció es considera recursiva quan s’invoca a si mateixa durant la seva execució.
Cas Base: És la condició que permet que la funció deixi de cridar-se a si mateixa. Sense un cas base, la funció pot entrar en un bucle infinit. És el més important de definir.
Crida Recursiva: És l’execució de la funció dins de la seva pròpia definició, amb arguments modificats que apropen la solució al cas base.
Un exemple comú de recursivitat és el càlcul del factorial d’un nombre n (denotat com n!). La definició recursiva és:
0! = 1n! = n * (n - 1)!Per exemple, el factorial de 5 és 120: I les crides recursives serien:
int factorial(int n) {
if (n == 0) {
return 1; // Cas base
}
return n * factorial(n - 1); // Crida recursiva
}
int main(){
cout << factorial(1) << endl;
cout << factorial(2) << endl;
cout << factorial(3) << endl;
cout << factorial(4) << endl;
cout << factorial(5) << endl;
cout << factorial(6) << endl;
}
#include <iostream>
using namespace std;
// Precondició: exp >= 0;
int my_pow(int base, int exp) {
// Cas base: qualsevol número elevat a 0 és 1
if (exp == 0)
return 1;
// Crida recursiva: base * base^(exp - 1)
return base * my_pow(base, exp - 1);
}
int main() {
//Fem un main per a comprovar que és correcte
cout << my_pow(3, 3) << endl; //Ha de donar 27
cout << my_pow(2, 4) << endl; //Ha de donar 16
}
#include <iostream>
using namespace std;
int sum_min_max(int x, int y, int z){
int min, max;
if(x <= y and x <= z) min = x;
else if(y<=z) min = y;
else min = z;
if(x >= y and x >= z) max = x;
else if(y>=z) max = y;
else max = z;
return min + max;
}
int main(){
cout << sum_min_max(736,291,348) << endl;
cout << sum_min_max(12,-569,666) << endl;
}
#include <iostream>
using namespace std;
int main(){
char a, b, c, d;
a = b = c ='x';
bool trobat = false;
//cin >> a >> b >> c;
while(not trobat and cin >> d and d != '.'){
if(a == 'h' and b == 'o' and c == 'l' and d == 'a') trobat = true;
else{
a = b;
b = c;
c = d;
}
}
if (trobat) cout << "hola" << endl;
else cout << "adeu" << endl;
}
#include <iostream>
using namespace std;
int main () {
char x,y,z;
int pos=0;
int aaa=0,aab=0,aba=0,abb=0, baa=0,bab=0,bba=0,bbb=0;
bool found=false;
cin >> x >> y >> z;
while (not found){
if (x=='a' and y=='a' and z=='a') aaa=aaa+1;
else if (x=='a' and y=='a' and z=='b') aab=aab+1;
else if (x=='a' and y=='b' and z=='a') aba=aba+1;
else if (x=='a' and y=='b' and z=='b') abb=abb+1;
else if (x=='b' and y=='a' and z=='a') baa=baa+1;
else if (x=='b' and y=='a' and z=='b') bab=bab+1;
else if (x=='b' and y=='b' and z=='a') bba=bba+1;
else if (x=='b' and y=='b' and z=='b') bbb=bbb+1;
if (aaa==2 or aab==2 or aba==2 or abb==2 or baa==2 or bab==2 or bba==2 or bbb==2) found=true;
if (found) cout << x << y << z << " " << pos << endl;
pos=pos+1;
x=y;
y=z;
cin >> z;
}
}
#include <iostream>
using namespace std;
int main () {
char n, n0, n1, n2;
int h = 0, s = 0;
n0 = n1 = n2 = 'x';
while (cin >> n) {
n2 = n1;
n1 = n0;
n0 = n;
if ((n2 == ':') and (n1 == '-') and (n0 == ')')) ++h;
else if ((n2 == '(') and (n1 == '-') and (n0 == ':')) ++h;
else if ((n2 == ':') and (n1 == '-') and (n0 == '(')) ++s;
else if ((n2 == ')') and (n1 == '-') and (n0 == ':')) ++s;
}
cout << h << " " << s << endl;
}
#include <iostream>
using namespace std;
int main(){
char c;
int conta, contb, total;
conta = contb = total = 0;
bool trobat = false;
while(cin >> c){
if(c == 'a') ++conta;
else if(c == 'b') ++contb;
else if(c == '?'){
if(trobat){
if(conta>contb) ++total;
}
trobat = true;
conta = contb = 0;
}
else if(c == '.'){
if(trobat){
if(conta>contb) ++total;
}
trobat = false;
conta = contb = 0;
}
else if(c == '!'){
if(trobat){
if(conta>contb) ++total;
}
trobat = false;
conta = contb = 0;
}
}
cout << total << endl;
}
#include <iostream>
using namespace std;
int main(){
}
Alexandre Gràcia Calvo