Задача с рекурсия
Да се намери броя на срещанията на а я записа на б? Пример: 4 85454 - 2, 123 984512 - 0, 65 321659 - 1
Не мога да разбера къде бъркам!!!
#include <iostream>
using namespace std;
void FindNumber(unsigned int b,unsigned int a, int count) {
if (b%10==a) {
count++;
}
else if(b/10>0) {
FindNumber(b/10, a, count);
}
cout << count << "\n";
}
int main() {
unsigned int a, b;
int count = 0;
cin >> b >> a;
FindNumber(b,a, count);
}
Благодаря ти много! Просто не разбирах защо ми се прекратява проверката и номера с count++ къде точно да е.
A какъв е проблемът, че не е валиден този код за другите два примера?
Променливата count служи по-скоро като променлива, която изброява цялото съвпадение на a с b. Ако вземем за пример първите данни - b = 85454 и a = 4 - имаме следната поредица от операции:
Дотук добре. Понеже a e цифра, всяко попадение с b се отчита. Но ето какво се получава ако а има повече от една цифра:
Понеже този алгоритъм рекурсивно "разбива" b на по-малка стойност, като само последната цифра бива сравнявана със стойността на a, когато а притежава две или повече цифри, няма никакви попадения.