Mam problem z poniższym kodem, nie wiem, czemu wypisuje on niewłaściwe wyniki, może jest jakiś błąd w rekurencji, tylko jaki ?
Biorąc liczbę naturalną n, weź sumę cyfr n. Jeśli ta wartość ma więcej niż jedną cyfrę, kontynuuj zmniejszanie w ten sposób, aż zostanie wygenerowana liczba jednocyfrowa.
Przykład: 456 >> 4+5+6 >>15>>1+5>>6
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int digital_root(int n)
{
int x=0,y=0;
while(n>0)
{
x=n%10;
n=n/10;
y=y+x;
if((n<1)&&(y>9))
{
digital_root(y);
}
if(y<10)
{return y;}
}
}
n %= 9;
- późna godzina, człowiek zmęczony ... :) albo ja czegoś tu nie rozumiem ...unsigned int
ów, że moja wersja i wersja @KamilAdam zwracają to samo.