使用递归,对任何正整数的所有数字求和 [英] Using recursion, sum all digits of any positive integer

查看:124
本文介绍了使用递归,对任何正整数的所有数字求和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经得到了基本的递归工作,但我不确定如何从整数中提取单个数字。


用户类型整数1234输出假设是1 + 2 + 3 + 4 = 10.


这是我到目前为止所拥有的。


----------- -------------------------------------------------


1. #include< iostream> //包括标准C ++库iostream类

2.

3.使用namespace std; //使用标准库

4.

5. int sumDigits(int myInt); //原型

6.

7. //功能主要开始程序执行

8. int main()

9. {

10.

11. int myInt; //声明整数myInt

12. cout<< "输入任何非负整数:" ;;

13. cin>>敏; //获取用户编号

14. int Integer = myInt;

15. sumDigits(myInt); //处理条目号的方法调用

16. cout<< "整数之和 <<整数<< "是 << sumDigits(myInt)<< endl;

17. system(PAUSE); //暂停执行

18.返回0; //表示程序成功结束

19.}

20.

21. int sumDigits(int i)// counter是非负的数字

22. {

23. if(i == 0)

24. return 0; //停止条件

25.其他

26.返回sumDigits(i - 1)+ i;

27.}


非常需要你能给予的任何帮助。


谢谢

I have gotten the basic recursion working but am not sure as to how to extract the individual digits from the integer.

User types integer 1234 the output is suppose to be 1 + 2 + 3 + 4 = 10.

This is whatI have so far.

------------------------------------------------------------

1. #include <iostream> //including the standard C++ library iostream class
2.
3. using namespace std; // using standard library
4.
5. int sumDigits(int myInt); // Prototype
6.
7. // function main begins program execution
8. int main()
9. {
10.
11. int myInt; // declare integer myInt
12. cout << " Type any non-negative integer: ";
13. cin >> myInt; // Get user number
14. int Integer = myInt;
15. sumDigits(myInt); // Method call for processing of entry number
16. cout << " The sum of the integer " << Integer << " is " << sumDigits(myInt) << endl;
17. system("PAUSE"); // pauses execution
18. return 0; // indicate that program ended successfully
19. }
20.
21. int sumDigits( int i) // counter is a nonnegative number
22. {
23. if(i == 0 )
24. return 0; // stopping condition
25. else
26. return sumDigits(i - 1) + i;
27. }

Any help you can give is greatly needed.

Thank You

推荐答案

23。 if(i == 0)

24.返回0; //停止条件

25.其他

26.返回sumDigits(i - 1)+ i;


而不是这个代码,使它像这样:

int sumDigits(int i){

如果(i == 0)返回0;

返回sumDigits (i / 10)+ i%10;

}
23. if(i == 0 )
24. return 0; // stopping condition
25. else
26. return sumDigits(i - 1) + i;

instead of this code, make it like this:
int sumDigits(int i){
if(i==0) return 0;
return sumDigits(i/10)+i%10;
}


@ djolle91


djolle91,


感谢您的帮助。这非常有效。


dbaker
@djolle91
djolle91,

Thank you for your help. That worked perfectly.

dbaker


由于这是C ++,你也可以考虑使用字符串流。

Since ths is C++, you might also consider using a stringstream.

展开 | 选择 | Wrap | 行号


这篇关于使用递归,对任何正整数的所有数字求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆