Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1.
- /* Да се напише рекурзивна функција која ќе пресметува двоен факториел (n!!).
- Двојниот факториел се пресметува по формулата:
- n!!=n(n−2)(n−4)...2∗0!, при што 0!=1 (ако n е парен број)
- n!!=n(n−2)(n−4)...3∗1!, при што 1!=1 (ако n е непарен број) */
- #include <stdio.h>
- #include <stdlib.h>
- int faktoriel(int n);
- int main() {
- int n;
- printf("Vnesi broj: \n");
- scanf("%d", &n);
- printf("Dvojniot faktoriel na %d e %d\n", n, faktoriel(n));
- system ("pause");
- return 0;
- }
- int faktoriel(n) {
- if (n == 0 || n == 1) return 1;
- else return n * faktoriel(n-2);
- }
- -----------------------------------------------------------------------------------------------------------------------
- 2.
- /* Да се напише рекурзивна функција која ќе пресметува производот на цифрите од повеќецифрен број.
- Да се најде односот на производот на цифрите и првобитниот број и да се испечати на екранот. */
- #include <stdio.h>
- #include <stdlib.h>
- int proizvodCifri(int n);
- int main() {
- int n;
- printf("Vnesi broj: \n");
- scanf("%d", &n);
- printf("Odnosot na proizvodot na cifrite %d i brojot %d e %d\n", proizvodCifri(n), n, n/proizvodCifri(n));
- system ("pause");
- return 0;
- }
- int proizvodCifri(n) {
- if (n == 0) return 1;
- else return n % 10 * proizvodCifri(n / 10);
- }
- -----------------------------------------------------------------------------------------------------------------------
- 3.
- /* Да се напише рекурзивна функција која ја пресметува сумата на сите последователни двоцифрени броеви
- кои го сочинуваат соодветниот број. */
- #include <stdio.h>
- #include <stdlib.h>
- int sumaDvocifreni(int n);
- int main() {
- int n;
- printf("Vnesi broj: \n");
- scanf("%d", &n);
- printf("Zbirot na dvocifrenite broevi vo brojot %d e %d\n", n, sumaDvocifreni(n));
- system ("pause");
- return 0;
- }
- int sumaDvocifreni(n) {
- if (n == 0) return 0;
- else return n % 100 + sumaDvocifreni(n/100);
- }
- -----------------------------------------------------------------------------------------------------------------------
- 4.
- /* Да се напише _рекурзивна функција_ која ќе ја изминува низа од цели броеви и ќе ја печати во обратен редослед.
- Низата може да има максимум 100 елементи.
- пр:
- оригинална низа: 12 23 54 65 34
- програмата печати: 34 65 54 23 12 */
- #include <stdio.h>
- #include <stdlib.h>
- void swap(int niza[], int n);
- int main() {
- int i, n, niza[100];
- printf("Vnesi golemina na niza: \n");
- scanf("%d", &n);
- printf("Vnesi niza: \n");
- for(i = 0; i < n; i++) {
- scanf("%d", &niza[i]);
- }
- swap(niza, n);
- system ("pause");
- return 0;
- }
- void swap(int niza[], int n) {
- printf("%d ", niza[n-1]);
- if(n-1 == 1) {
- printf("%d ", niza[0]);
- }
- if(n-1 > 1) {
- swap(niza, n-1);
- }
- }
- -----------------------------------------------------------------------------------------------------------------------
- 5.
- /* 5 */
- #include <stdio.h>
- #include <stdlib.h>
- int suma(int Aniza[], int j);
- int main() {
- int i, j, n, sumaElementi;
- int Aniza[100], Bniza[100];
- printf("Vnesi golemina na niza: \n");
- scanf("%d", &n);
- printf("Vnesi niza: \n");
- for (i = 0; i < n; i++) {
- scanf("%d", &Aniza[i]);
- if (Aniza[i] < 0) {
- Aniza[i] = 0;
- }
- }
- Bniza[0] = 0;
- for (i = n-1; i > 0; i--) {
- sumaElementi = 0;
- for (j = i - 1; j >= 0; j--) {
- sumaElementi += suma(Aniza, j);
- }
- Bniza[i] = sumaElementi;
- }
- for (i = 1; i < n; i++) {
- printf("%d ", Bniza[i-1]);
- }
- printf("%d\n", Bniza[n-1]);
- system ("pause");
- return 0;
- }
- int suma(int Aniza[], int j) {
- if (j == -1) {
- return 0;
- }
- if (j > -1) {
- return Aniza[j] + suma(Aniza, j-1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement