З знайти цифровий корінь числа - pyatnitsev home

Написати рекурсивну і нерекурсівние функцію,
яка приймає позитивний цілочисельний аргумент
і повертає цифровий корінь цього числа. цифровий
корінь числа обчислюється таким чином.
Складаються всі цифри числа, потім все цифри
знайденої суми і т.д. Процес повторюється до тих пір,
поки в результаті що не отримано однозначне число
(Цифра), яке і є цифровим коренем.

Почнемо з нерекурсівние варіанту.

Весь вихідний код такий:

в функції main все досить просто: спочатку встановлюється російська локаль (setlocale (LC_ALL, «Russian»);), потім користувачеві видається запрошення ввести число і це число зчитується в змінну n цілого типу. Після цього друкується результат роботи функції int RootOfNumber (int k).

Розглянемо її докладніше.

У неї передається ціле число і поки воно містить більше 1 знака (умова k> 9) виконується виклик функції для формування чисел всередині числа. Викликається вона з різними аргументами. У мене це k. На кожному витку циклу це число зменшується, і рано чи пізно воно стане менше 10. Тоді функція поверне значення.

І остання функція, яка просто обчислює суму цифр усередині числа:

Приймає ціле число N. І поки N не стане рівним нулю ділить це число на 10 (підстава системи числення) і додає залишок від ділення до суми, після чого ділить N на 10 ще раз, але в цей раз вже записувати не залишок від ділення, а цілу частину. Так як відбувається округлення, то рано чи пізно це число стане рівним нулю.

Рекурсивний варіант тієї ж функції:

Фішка рекурсивних функцій в тому, що вона викликає сама себе всередині себе. У цьому коді немає додаткової функції, яка вважала б суму, але код міститься всередині. Тобто спочатку на функцію подається число, для якого добре б порахувати корінь, далі для цього числа вважається сума його чисел і перевіряється умова виходу з рекурсії - чи є число однозначним, тобто менше 10. Якщо так, то виходимо з рекурсії і повертаємо число, інакше - викликаємо ще раз цю ж функцію, але вже з новою сумою.

Previous Article Переклад: Розробка вашого першого Metrostyle-додаток використовуючи C ++, C # або Visual Basic.Net

Next Article С ++: Шифр ​​Цезаря