Documente Academic
Documente Profesional
Documente Cultură
10) Sa se scrie o functie recursiva pentru a transforma un numar natural n, din baza
10 în baza k (1<k<=10) (rezolvare...)
Rezolvari
1) Să se calculeze n! in varianta iterativa.
#include<stdio.h>
long int factorial (int n)
{
long int f=1;
for (int i=1; i<=n;i++)
f=f*i;
return f;
}
void main()
{
int n;
printf("Introduceti n= ");
scanf("%d", &n);
if(!n)
printf("0!=1\n");
else
printf("%d!=%ld\n",n,factorial(n));
getchar();
int var;
scanf("%d", var);
}
if(!n)
printf("0!=1\n");
else
printf("%d!=%ld\n",n,factorial(n));
getchar();
int var;
scanf("%d", var);
}
getchar();
int var;
scanf("%d", var);
}
getch();
}
getch();
}
getch();
}
getch();
}
//sumarea elementelor
printf("\nSuma elementelor: %d",suma(x,n-1)); /* am apelat cu n-1, ptr
ca am
spus mai sus ca acest parametru
reprezinta
indicele ultimului element din
sir */
//produsul elementelor
printf("\nProdusul elementelor: %d",produs(x,n-1));
//numarul elementelor negative din sir
printf("\nNumarul elementelor negative: %d",numar_negative(x,n-1));
//produsul componentelor pozitive
printf("\nProdusul elementelor pozitive: %d",produs_pozitive(x,n-1));
//media componentelor din sir
printf("\nMedia componentelor din sir: %.2f",media(x,n-1,n)); /*
primul parametru - sirul,
al doilea parametru - indicele
ultimului element din sir, al treilea
parametru - dimensiunea reala a sirului
(numarul de elemente citite) */
getch();
}
9) Sa se scrie o functie recursiva pentru determinarea sumei cifrelor unui numar
natural. Indicatie: Se izoleaza ultima cifra, iar lui n i se atribuie câtul întreg dintre
vechea valoare şi 10.
#include<stdio.h>
#include<conio.h>
int suma(int n)
{
if(!n) return 0; //!n=daca nu exista n
else return n%10+suma(n/10);
}
void main()
{
int n;
printf("Introduceti numarul: ");
scanf("%d", &n);
getch();
}
10) Sa se scrie o functie recursiva pentru a transforma un numar natural n, din baza
10 în baza k (1<k<=10). Indicatie: Numarul se împarte la k, se retine restul, câtul se
împarte la k, se retine restul... pâna când câtul este mai mic decât împartitorul.
Rezultatul se obtine prin scrierea în ordine inversa a resturilor obtinute. Tiparirea
restului se face dupa autoapel.
#include<stdio.h>
#include<conio.h>
#include<stdio.h>
#include<conio.h>
int F(int x)
{
if (x>=12) return x-1;
return F(F(x+2));
}
void main()
{
int x;
printf("x="); scanf("%d",&x);
printf("Valoarea functiei este: %d",F(x));
getch();
}
12) Se considera sirul lui Fibonacci (Un) definit astfel:
0, n=0
Un= 1, n=1
Un-1+Un-2, altfel
Se citeste n, un numar natural. Sa se calculeze Un, in varianta iterativa.
#include<stdio.h>
#include<conio.h>
void main()
{
int n,U0=0,U1=1,U2;
printf("n="); scanf("%d",&n);
if(!n) printf("%d",U0);
else
if (n==1) printf("%d",U1);
else
{
for (int i=2;i<=n;i++)
{
U2=U0+U1;
U0=U1;
U1=U2;
}
printf("%d",U2);
}
/*
ptr. n=3
i=2: U2=U0+U1
U0=U1
U1=U2
i=3: U2=U1+U2
*/
getch();
}
int U (int n)
{
if (!n) return 0;
else if (n==1) return 1;
else return U(n-1)+U(n-2);
}
void main()
{
int n;
printf("Introduceti n=");
scanf("%d",&n);
getch();
}
Copyright © 2020 info64.ro