exemple - recursivitate si pointeri la functii

7
Exemple recusivitate – metoda reducerii, metoda divide Exemplu cu cele doua variante #include <stdio.h> #include <conio.h> double max1(double *a, int s, int d) { double x1,x2,m; if (s==d) m=a[s]; else { x1=max1(a,s,(s+d)/2); x2=max1(a,(s+d)/2+1,d); if (x1>x2) m=x1; else m=x2; } return m; } double max2(double *a,int n) { double x1; if (n==0) return a[0]; else { x1=max2(a,n-1); if (x1>a[n-1]) return x1; else return a[n-1]; } } void main() { int i,n; double *v, max; printf("\nDimensiunea vectorului:"); scanf("%i",&n); v=new double[n]; printf("Elementele vectorului\n"); for(i=0;i<n;i++) scanf("%lf",&v[i]); 1

Upload: viatr0nic

Post on 18-Aug-2015

223 views

Category:

Documents


1 download

DESCRIPTION

z

TRANSCRIPT

Exemple recusivitate metoda reducerii, metoda divideExemplu cu cele doua variante#include #include double max1(double *a, int s, int d){ double x1,x2,m;if (s==d) m=a[s;else{ x1=max1(a,s,(s!d)"2);x2=max1(a,(s!d)"2!1,d);if (x1>x2) m=x1;else m=x2;#$etu$n m;#double max2(double *a,int n){ double x1;if (n==%) $etu$n a[%;else{ x1=max2(a,n&1);if (x1>a[n&1) $etu$n x1;else $etu$n a[n&1;## 'oid main(){ int i,n;double *', max;($intf()*n+imensiunea 'ecto$ului,));scanf()-i),.n);'=ne/ double[n;($intf()0lementele 'ecto$ului*n));fo$(i=%;ils) $etu$n &1;int mi:=(li!ls)"2;if('[mi:==;) $etu$n mi:;2if('[mi:>;)$etu$n cauta9bina$(',li,mi:&1,;);$etu$n cauta9bina$(',mi:!1,ls,;);#A. +ete$mina$eacmmdc&ului dint$&un Bi$ de nume$e natu$aleint cmmdc(int a[1%%, int s, int d){ if(s==d) $etu$n a[s;else { int x,5;x=cmmdc(a,s,(s!d)"2);5=cmmdc(a,(s!d)"2!1,d);/hile(xC=5) if(x>5) x=x&5; else 5=5&x;$etu$n x; ##D. 4>sesc$iesub($o3$amul ?ca$edete$min>($imaa(a$i ieaunei 'alo$i date@nt$&un 'ecto$ so$tat. ?>uta$ea se 'a $ealisit soluFie dato$it> num>$ului ($ea mic de ite$aFii sau ($eci; 2 L s&a obFinut o soluFia a($oximati'>; 2 L inte$'alul dat nu conFine nici osoluFie. #include #include #includefloat f(float x){ $etu$n (2*(o/(x,2)&(o/(x,2)!x&2);#int bisectie(float x%,float x1,unsi3ned n,float e(s,float (*f)(float),float *sol){ int cod; if ((*f)(x%)*(*f)(x1)>%) cod=2; else if (n==%) cod=%; else {*sol=(x%!x1)"2; if((*f)(*sol)==%) cod=1; else if(fabs(x%&x1)