กำหนดจำนวนเต็มสองตัว 'number' และ 'repeat' เป็นอินพุต เป้าหมายคือคำนวณผลรวมของหลักเลขของตัวเลขอินพุตที่ต่อซ้ำ 'repeat' ครั้ง จนกว่าผลรวมจะกลายเป็นตัวเลขหลักเดียว (Single Digit) ทำซ้ำจนกว่าตัวเลขที่ได้จากผลรวมหลักเลขจะกลายเป็นตัวเลขหลักเดียว หากตัวเลขอินพุตคือ 123 และ repeat=2 ผลรวมหลักเลขของ 123123 จะเป็น 1+2+3+1+2+3=12 ซึ่งไม่ใช่ตัวเลขหลักเดียว ตอนนี้ผลรวมหลักเลขของ 12 คือ 1+2=3 ผลลัพธ์จะเป็น 3
ดูสถานการณ์ Input-Output ต่างๆ
Input - number = 32, repeat = 3
Output - Recursive sum of digits of a number formed by repeated appends is: 6
คำอธิบาย - ผลรวมหลักเลขของ 323232 คือ 3+2+3+2+3+2=15 และผลรวมหลักเลขของ 15 คือ 1+5=6 6 เป็นตัวเลขหลักเดียว ดังนั้นผลลัพธ์คือ 6
Input - number = 81, repeat = 4
Output - Recursive sum of digits of a number formed by repeated appends is: 9
คำอธิบาย - ผลรวมหลักเลขของ 81818181 คือ 1+8+1+8+1+8+1+8=36 และผลรวมหลักเลขของ 36 คือ 3+6=9 9 เป็นตัวเลขหลักเดียว ดังนั้นผลลัพธ์คือ 9
วิธีการที่ใช้ในโปรแกรมด้านล่าง
ประกาศตัวแปรจำนวนเต็มสองตัวเป็น number และ repeat ส่งข้อมูลไปยังฟังก์ชัน Recursive_Sum(number, repeat)
ภายในฟังก์ชัน Recursive_Sum(int number, int repeat)
ประกาศตัวแปรจำนวนเต็มเป็น total และตั้งค่าเป็น repeat * sum(number)
คืนค่าการเรียกฟังก์ชัน sum(total)
ภายในฟังก์ชัน sum(int number)
ตรวจสอบ IF number เป็น 0 แล้วคืนค่า 0
ตรวจสอบ IF number % 9 เป็น 0 แล้วคืนค่า 9
ELSE คืนค่า number % 9
พิมพ์ผลลัพธ์
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int sum(int number) {
if(number == 0) {
return 0;
}
if(number % 9 == 0) {
return 9;
} else {
return number % 9;
}
}
int Recursive_Sum(int number, int repeat) {
int total = repeat * sum(number);
return sum(total);
}
int main() {
int number = 12;
int repeat = 4;
cout<<"Recursive sum of digits of a number formed by repeated appends is: "<<Recursive_Sum(number, repeat);
return 0;
}
ผลลัพธ์
หากเรารันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:
Recursive sum of digits of a number formed by repeated appends is: 3