先说思路:就跟着题意,奇数称三加一,偶数就除2,到n为1时就停止,在这个过程中不断将数据存入数组中就好,最后在用循环索引递减就可以将数列倒着输出了。
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int a[1000];
int len = 1;
a[0]=n;
while (n != 1) {
if (n % 2!= 0) {
n = n * 3 + 1;
} else {
n /= 2;
}
a[len++] = n;
}
for (int i = len - 1; i >= 0; i--) {
printf("%d ", a[i]);
}
return 0;
}
PS : 说实话,原来我是只用for循环的,但是搞了好一段时间都奇奇怪怪,反正就是通不过。之后去问了豆包(别喷,就只是看看优化而已),之后就改成while循环了。有时写代码换个思路会使解题方法明晰很多。
还有就是这里的数组定义要较大的数,否则还是会有一个点通不过。