Неможам да ги сфатам чекорите за рекурзијата во следните 4 програми(ќе го поставам кодот):
1. Функцијата треба да пресмета збир на сите цифри шо се наогаат на непарни позиции (гледано од десно кон лево)
2. Функцијата треба да го пресмета производот на сите цифри кои се на парни позиции.
3. Функцијата треба да го врати бројот кој се добива само од цифрите кои се наоѓаат на непарни позиции, гледано од десно кон лево и ќе формира нов број. Се смета дека најмалку значајната цифра се наоѓа на 0-та позиција.
4. Функцијата за даден природен број ќе го врати збирот на сите парни цифри кои во исто време се наоѓаат на парни позиции, гледано од десно кон лево. Се смета дека најмалку значајната цифра се наоѓа на 1-та позиција.
Значи проблемот е во тоа што незнам кој чекор што функција има. Знам да ја искузам програмата и ќе работи, но тоа не е решение за да се научи. Сакам детално образложение за тоа како работи рекурзијата во наведените случаи (доволно е еден да се објасни кој ви е најлесен останатите веројатно ќе ги сфатам сам). Чекор по чекор ќе ве молам. И ве молам не пишувајте коментари во стилот "незнам што не ти е јасно", "како не го знаеш тоа а знаеш да ја искуцаш" итн итн. Нека пишува некој што ќе може да објасни и ќе сака. Фала однапред. Поздрав.
1. Функцијата треба да пресмета збир на сите цифри шо се наогаат на непарни позиции (гледано од десно кон лево)
Код:
#include <stdio.h>
int func(int x) {
if (x < 10) return 0;
return ((x/10)%10 + func(x/100));
}
int main(){
int n;
printf("Vnesi eden priroden broj: ");
scanf("%d", &n);
printf("Zbirot na cifrite koi se naogaat na neparni pozicii iznesuva %d.\n", func(n));
return 0;
}
2. Функцијата треба да го пресмета производот на сите цифри кои се на парни позиции.
Код:
#include <stdio.h>
int func(int x)
{
if (x < 10) return 1;
else return ((x/10)%10) * func(x/100);
}
int main()
{
int n;
printf("Vnesi eden priroden broj: ");
scanf("%d", &n);
printf("Proizvodot na cifrite koi se naogaat na parni pozicii iznesuva %d.\n", func(n));
return 0;
}
3. Функцијата треба да го врати бројот кој се добива само од цифрите кои се наоѓаат на непарни позиции, гледано од десно кон лево и ќе формира нов број. Се смета дека најмалку значајната цифра се наоѓа на 0-та позиција.
Код:
#include <stdio.h>
int suma_neparni(int a)
{
if(a==0)
return 0;
return a%10+10*suma_neparni(a/100);
}
int main() {
int broj;
scanf("%d", &broj);
printf("%d",suma_neparni(broj/10));
return 0;
}
4. Функцијата за даден природен број ќе го врати збирот на сите парни цифри кои во исто време се наоѓаат на парни позиции, гледано од десно кон лево. Се смета дека најмалку значајната цифра се наоѓа на 1-та позиција.
Код:
#include <stdio.h>
int suma_parni(int a)
{
if(a==0)
return 0;
if((a%10)%2!=0)
return suma_parni(a/100);
return a%10+suma_parni(a/100);
}
int main() {
int broj;
scanf("%d", &broj);
printf("%d",suma_parni(broj/10));
return 0;
}
Значи проблемот е во тоа што незнам кој чекор што функција има. Знам да ја искузам програмата и ќе работи, но тоа не е решение за да се научи. Сакам детално образложение за тоа како работи рекурзијата во наведените случаи (доволно е еден да се објасни кој ви е најлесен останатите веројатно ќе ги сфатам сам). Чекор по чекор ќе ве молам. И ве молам не пишувајте коментари во стилот "незнам што не ти е јасно", "како не го знаеш тоа а знаеш да ја искуцаш" итн итн. Нека пишува некој што ќе може да објасни и ќе сака. Фала однапред. Поздрав.