编程题#2:角谷猜想
Posted 平行线不会相交
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程题#2:角谷猜想相关的知识,希望对你有一定的参考价值。
描述
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘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"
#include <iostream> using namespace std; int f(int n); int main() { int n; cin >> n; f(n); cout << "End" << endl; return 0; } int f(int n) { if (n == 1) return 1; else { if (n % 2 == 0) { cout << n << ‘/‘ << 2 << ‘=‘ << n/2 << endl; n /= 2; f(n); } else { cout << n << ‘*‘ << 3 << ‘+‘ << 1 << ‘=‘ << n*3+1 << endl; n = n * 3 + 1; f(n); } } }
以上是关于编程题#2:角谷猜想的主要内容,如果未能解决你的问题,请参考以下文章