C++中重复追加数字形成的数字的递归求和


给定两个整数“number”和“repeat”作为输入。目标是计算输入数字重复“repeat”次数后形成的数字的各位数字之和,直到该和变成一位数。重复此过程,直到获得的数字的各位数字之和变成一位数。如果输入数字是123,repeat=2,则123123的各位数字之和为1+2+3+1+2+3=12,它不是一位数。现在,12的各位数字之和是1+2=3。输出将为3。

让我们看看这个的各种输入输出场景

输入 − number=32 repeat=3

输出 − 重复追加数字形成的数字的递归求和是:6

解释 − 323232的各位数字之和是3+2+3+2+3+2=15,而15的各位数字之和是1+5=6。6是一位数,所以输出为6。

输入 − number=81 repeat=4

输出 − 重复追加数字形成的数字的递归求和是: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)函数内部

    • 检查如果number为0,则返回0。

    • 检查如果number % 9为0,则返回9。

    • 否则,返回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

更新于:2021年11月3日

321 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.