以 【深基5.例3】冰雹猜想 此题为例,使用vector
题目描述
给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 n 是 20,变化的过程是 20->10->5->16->8-> 4->2-> 1。
根据给定的数字,验证这个猜想,并从最后的1开始,倒序输出整个变化序列。
本人代码如下
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;vector<int>num;//创建一个名字为num的整形容器int count=0;num.push_back(n);//先把输入的数字放入容器while(num[count]!=1){ if(num[count]%2==0) num.push_back(num[count]/2); //添加数字在容器结尾 else num.push_back(num[count]*3+1);count++;}for(int i=num.size()-1;i>=0;i--) cout<<num[i]<<" ";//倒叙输出所有数字,利用num.size()获得容器的大小return 0;
}