角谷猜想的内容是:“对任意的正整数n,若为偶数,则把它除以2;若为奇数,则把它乘以3加1 。经过如此有限次运算后,总可以得到正整数值1 。“
请你编一个程序,根据输入的正整数n,输出每一步运算结果。
输入
输入一个正整数n。
输出
输出若干行,每行一个算式表示计算过程。
数据范围
对于20%的数据,2≤n≤10;
对于100%的数据,2≤n≤100;
输入样例
3
输出样例
10
5
16
8
4
2
1
解题思路
利用递归判断不为1是是奇数还是偶数 并进行相应操作
代码
#include <bits/stdc++.h>
#include<iostream>
#include <cmath>
#include <climits>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <deque>
#include <list>
#include <utility>
#include<cstring>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <iterator>
#define INT_MAX 0x7fffffff
#define INT_MIN 0x80000000
const int MOD = 1E9+7;
const int N = 100000+5;
using namespace std;
int f(int x)
{
if(x!=1){
if(x%2==0){
cout << x/2 << endl;
f(x/2);
}
else{
cout << x*3+1 << endl;
f(x*3+1);
}
}
}
int main()
{
int n;
cin >> n;
f(n);
return 0;
}