概述
角谷定理
题目描述
角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。
现在请你编写C++程序求经过多少个数可得到自然数1。如:例如数据22的变化过程: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1,数据变化次数为16。注意,若输入自然数为1,则不需要运算,运算次数为1(用循环和递归分别实现)。
输入
一个自然数n(n<=1000)
输出
得到自然数1所需要经过的数字个数。
样例输入
22
样例输出
16
样例解释
数据22的变化过程: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1,数据变化次数为16
(1)递归实现
#include <iostream>
using namespace std;
int getCount(int n){
if(n ==1) return 1;
if(n % 2 == 0){
return getCount(n / 2) + 1;
}
return getCount(n * 3 +1) + 1;
}
int main(){
int n;
cin >> n;
cout << getCount(n);
return 0;
}
(2)循环实现
#include <iostream>
using namespace std;
int getCount(int n){
int count = 0;
while(n > 1){
count++;
if(n % 2 == 0){
n /= 2;
}else{
n = n * 3 + 1;
}
}
return count + 1;
}
int main(){
int namespace;
cin >> n;
cout << getCount(n);
return 0;
}
最后
以上就是高挑小蝴蝶为你收集整理的C++解角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。若输入自然数为1,则不需要运算,运算次数为1(用循环和递归分别实现)的全部内容,希望文章能够帮你解决C++解角谷定理:输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。若输入自然数为1,则不需要运算,运算次数为1(用循环和递归分别实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复