A keresést a digitális gyökere számos - pyatnitsev otthon

Írja rekurzív és nem rekurzív függvény
hogy vesz egy pozitív egész szám érv
és visszaadja a digitális gyökere ezt a számot. digitális
gyökér számot a következőképpen számítjuk ki.
Add fel az összes számjegyét, majd az összes számot
az összeg talált, stb Az eljárást addig ismételjük, amíg
de az eredmény nem egyjegyű számot kapunk
(Ábra), amely a digitális gyökér.

Kezdjük egy nem rekurzív változata.

Minden forráskód a következő:

a fő funkciója, ez elég egyszerű: először állítsa orosz locale (setlocale (LC_ALL, «orosz»);), akkor a felhasználónak meg kell adnia egy számot, és ez a szám olvassa be a változó n egész szám jellegű. Ezután, hogy a nyomtatott eredménye int RootOfNumber funkció (int k).

Nézzük meg részletesebben.

Azt át egy egész, és bár több mint egy jel (olyan állapot, k> 9) hívás funkció összecsukható számok a számot. Úgy hívják a különböző érveket. I k. Mindegyik ismétlésnél a hurok a szám csökken, és előbb-utóbb ez lesz kevesebb, mint 10. Ezután a függvény visszatérési.

Az utolsó funkció, amely egyszerűen összegét számítja ki a számjegyek száma:

Egész számokat N. Amíg n értéke nulla elosztja ezt a számot 10 (radix), és hozzáadja a fennmaradó részlege, hogy az összeg, majd elosztja a N 10 újra, de ez alkalommal nem már felvett való osztás maradéka, és az egész részt. Mivel megy körbe, előbb vagy utóbb, ez a szám nulla lesz.

A rekurzív változata ugyanaz a funkciója:

A chip rekurzív függvények, hogy felhívja magára belül is. Ebben a kódot, nincs további funkciókat, ami az összeg, de a kód belül van. Azaz először a funkciót szolgált a számot, amelynek jó, hogy kiszámítja a gyökér, akkor ezt a számot kell tekinteni a számok összege, és kivett rekurzió kilépési feltétel - ha a szám egyértelmű, azaz kevesebb, mint 10. Ha igen, akkor jön ki a rekurzió visszaadja a számot, vagy - ismét hívja ugyanazt a funkciót, de az új összeget.

Előző cikk Fordítás: Fejlődő Your First Metrostyle-alkalmazásba C ++, C # vagy Visual Basic.Net

Következő cikk C ++: Caesar rejtjel