ระบุ 'number' และ 'repeat' จำนวนเต็มสองตัวเป็นอินพุต เป้าหมายคือการคำนวณผลรวมของตัวเลขของหมายเลขที่ป้อนซ้ำ 'ซ้ำ' จำนวนครั้งจนกว่าผลรวมจะกลายเป็นตัวเลขหลักเดียว ทำเช่นนี้จนกว่าจำนวนที่ได้รับพร้อมผลรวมของหลักจะกลายเป็นตัวเลขหลักเดียว หากตัวเลขที่ป้อนเป็น 123 และทำซ้ำ=2 มากกว่าผลรวมของหลัก 123123 จะเป็น1+2+3+1+2+3=12 ซึ่งไม่ใช่ตัวเลขหลักเดียว ตอนนี้ผลรวมของหลัก 12 คือ 1+2=3 ผลลัพธ์จะเป็น 3
ให้เราดูสถานการณ์อินพุตเอาต์พุตต่างๆ สำหรับสิ่งนี้
ป้อนข้อมูล − หมายเลข=32 ซ้ำ=3
ผลผลิต − ผลรวมของตัวเลขแบบเรียกซ้ำของตัวเลขที่เกิดขึ้นจากการต่อท้ายซ้ำคือ:6
คำอธิบาย − ผลรวมของหลัก 323232 คือ 3+2+3+2+3+2=15 และผลรวมของหลัก 15 คือ 1+5=6 6 เป็นตัวเลขหลักเดียว ดังนั้นเอาต์พุตจะเป็น 6
ป้อนข้อมูล − หมายเลข=81 ซ้ำ=4
ผลผลิต − ผลรวมของตัวเลขแบบเรียกซ้ำของตัวเลขที่เกิดขึ้นจากการต่อท้ายซ้ำคือ:9
คำอธิบาย − ผลรวมของหลัก 81818181 คือ 1+8+1+8+1+8+1+8=36 และผลรวมของหลัก 36 คือ 3+6=9 9 เป็นตัวเลขหลักเดียว ดังนั้นเอาต์พุตจึงเป็น 9
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ประกาศตัวแปรประเภทจำนวนเต็มสองตัวเป็นตัวเลขและทำซ้ำ ส่งข้อมูลไปยังฟังก์ชันเป็น Recursive_Sum(หมายเลข ทำซ้ำ)
-
ภายในฟังก์ชันเป็น Recursive_Sum(จำนวน int, int ซ้ำ)
-
ประกาศตัวแปรจำนวนเต็มเป็นผลรวมและตั้งค่าซ้ำ * sum(number);
-
กลับไปเรียกฟังก์ชันเป็นผลรวม (ทั้งหมด)
-
-
ภายในฟังก์ชันเป็นผลรวม (จำนวน int)
-
ตรวจสอบว่าหมายเลขเป็น 0 แล้วส่งคืน 0
-
ตรวจสอบว่าหมายเลข % 9 เป็น 0 แล้วส่งคืน 9
-
ELSE ส่งคืนหมายเลข % 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