Functii2
Se citesc de la tastatura n elemente. Sa se afiseze produsul elementelor.
Observam ca:
pentru n=0 produsul este 1 (1 este elementul neutru pentru inmultire. In plus, 0!=1)
pentru n>=0, produsul este produsul primilor n-1 termeni la care se inmulteste termenul al n-lea:
produs(n)=produs(n-1)*a[n].
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static int n;
static int[] a = new int[100];
static int produs(int n)/*Calculam produsul intr-o maniera recursiva*/
{
if (n == 0) return 1;
return produs(n - 1) * a[n];
}
static void Main()
{
//citim datele de intrare
Console.WriteLine("dati n:");
n=int.Parse(Console.ReadLine());
Console.WriteLine("Dati elementele");
for (int i = 1; i <= n; i++)
a[i] = int.Parse(Console.ReadLine());
//afisam rezultatul - produsul celor n termeni din vector
Console.WriteLine(produs(n));
Console.ReadKey();
}
}
Se citesc de la tastatura n numere. Sa se afiseze produsul numerelor pare.
Observam ca pentru n=0 produsul este 1. Pentru un numar par produsul se obtine din produsul primelor n-1 numere la care se inmulteste numarul par. Daca numarul nu e par produsul ramane cel de la pasul anterior.
Prin urmare:
produs(0)=1
produs(n)=produs(n-1)*a[n], daca a[n] este par;
produs(n)=produs(n-1), daca a[n] este impar.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static int n;
static int[] a = new int[100];
static int produs(int n)
{
if (n == 0) return 1;
if (a[n] % 2 == 0) return produs(n - 1) * a[n];
else return produs(n - 1);
}
static void Main()
{
Console.WriteLine("dati n:");
n=int.Parse(Console.ReadLine());
Console.WriteLine("Dati elementele");
for (int i = 1; i <= n; i++)
a[i] = int.Parse(Console.ReadLine());
Console.WriteLine(produs(n));
Console.ReadKey();
}
}
Sa se afiseze suma elementelor impare dintr-un vector cu n elemente.
Observam ca:
pentru n=0 suma este 0 (0 este elementul neutru pentru adunare).
pentru a[n] numar impar, cand n>0, suma se obtine din suma precedenta la care se adauga a[n].
daca a[n] este numar, par suma precedenta nu se schimba.
Prin urmare:
suma(0)=0
suma(n)=suma(n-1)+a[n] daca a[n] este impar si n>0
suma(n)=suma(n-1) daca a[n] este par si n>0.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static int n;
static int[] a = new int[100];
static int suma(int n)
{
if (n == 0) return 0;
if (a[n] % 2 == 1) return suma(n - 1) + a[n];
else return suma(n - 1);
}
static void Main()
{
Console.WriteLine("dati n:");
n=int.Parse(Console.ReadLine());
Console.WriteLine("Dati elementele");
for (int i = 1; i <= n; i++)
a[i] = int.Parse(Console.ReadLine());
Console.WriteLine(suma(n));
Console.ReadKey();
}
}
Sa se afiseze numarul de numere prime dintr-un sir de n numere intregi.
Observam ca pentru n=0 numarul de numere care satisfac conditia ceruta este 0.
Daca a[n] este numar prim, numarul de numere prime creste cu 1, adica la numarul de numere prime obtinut pana la acest pas se adauga 1.
Daca a[n] nu este prim, numarul de numere prime nu se schimba.
Prin urmare:
contor(0)=0
contor(n)=contor(n-1)+1, daca a[n] este prim
contor(n)=contor(n-1), daca a[n] nu e prim.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static int n;
static int[] a = new int[100];
static bool prim(int n)
{
if (n <= 1) return false;
for (int i = 2; i <= n / 2; i++)
if (n % i == 0) return false;
return true;
}
static int contor(int n)
{
if (n == 0) return 0;
else
if (prim(a[n])) return contor(n - 1) +1;
else return contor(n - 1);
}
static void Main()
{
Console.WriteLine("dati n:");
n=int.Parse(Console.ReadLine());
Console.WriteLine("Dati elementele");
for (int i = 1; i <= n; i++)
a[i] = int.Parse(Console.ReadLine());
Console.WriteLine(contor(n));
Console.ReadKey();
}
}