24.2.3.24011210. Napisati sljedeće rekurzivne funkcije:
  1. Funkciju “SumaKubova“ koja računa zbir kubova svih brojeva od 1 do N gdje je N prirodan broj prosljeđen kao parametar;
  2. Funkciju “SumaCifara“ koja računa zbir cifara prirodnog broja N prosljeđenog kao parametar;
  3. Funkciju “Stepen“ sa dva parametra “X“ i “N“ od kojih je prvi realni broj a drugi cijeli broj, a koja računa vrijednost stepena XN (voditi računa da “N“ može biti i negativan);
  4. Funkciju “NZD“ sa dva cjelobrojna parametra “A“ i “B“ koja računa najveći zajednički djelilac brojeva A i B;
  5. Sve funkcije treba da budu napisane u čisto rekurzivnom stilu, bez ikakve upotrebe petlji. Napisane funkcije testirati u kratkom testnom programu (“main“ funkciji) u kojem će se svaka od napisanih funkcija pozvati

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
using namespace std;

int SumaKubova(int n){
if(n==1)return 1;
return n*n*n+SumaKubova(n-1);
}
int SumaCifara(int n){
if(n/10)return n%10+SumaCifara(n/10);
return n%10;
}
double Stepen(double x,int n){
if(x==0)return 0;
if(n==0)return 1;
if(n<0)return (1/x)*Stepen(1/x,-n-1);
else return x*Stepen(x,n-1);
}
int NZD(int a,int b){
if((a%b)==0)return b;
return NZD(b,(a%b));
}
int main(){
int n1,n2;
double x;
cout<<"\n   Unesite broj iz N za koji zelite sumu kubova od 1 do tog broja(ukljucivo),\n"
    <<"kao i zbir nj cifara:\n";
cin>>n1;
cout<<SumaKubova(n1)<<endl<<SumaCifara(n1)<<endl
    <<"\n   Unesite broj iz R i nj odgovarajuci exponent iz Z i dobicete nj stepen...:\n";
cin>>x>>n2;
cout<<Stepen(x,n2)
    <<"\n\n   Unesite dva broja iz Z i dobicete njihov NZD:\n";
cin>>n1>>n2;
cout<<NZD(n1,n2);
getch();
return 0;
}

Izvođenje programa:

Riješeni zadaci 2    Index