POJ C程序设计进阶 编程题#2:角谷猜想

编程题#2:角谷猜想

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。

程序要求输入一个整数,将经过处理得到1的过程输出来。

输入

一个正整数

输出

从输入整数到1的步骤,每一步为一行,每一部中描述计算过程,假定输入为7,则输出为:

7*3+1=22

22/2=11

11*3+1=34

34/2=17

17*3+1=52

52/2=26

26/2=13

13*3+1=40

40/2=20

20/2=10

10/2=5

5*3+1=16

16/2=8

8/2=4

4/2=2

2/2=1

最后一行输出"End",如果输入为1,直接输出"End" 

样例输入

5

样例输出

5*3+1=16

16/2=8

8/2=4

4/2=2

2/2=1

End


 

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 
 5 void fun(int a);
 6 int main()
 7 {
 8     int a;
 9     cin >> a;
10     fun(a);
11     return 0;
12 }
13 
14 void fun(int a)
15 {
16     if (a == 1) {
17         cout << "End";
18     }
19     else if (a % 2 == 1) {
20         int result = a * 3 + 1;
21         printf("%d*3+1=%d\n", a, result);
22         fun(result);
23     }
24     else {
25         int result = a / 2;
26         printf("%d/2=%d\n", a, result);
27         fun(result);
28     } 
29 }

 

posted @ 2015-08-07 13:11  dagon  阅读(995)  评论(0)    收藏  举报