第一题有两种解法,一种是循环
一种是递归;
先是循环
#include<stdio.h>
int main() {
int a;
int i;
scanf("%d", &a);
for (i = 0; a != 1; i++) {
if (a % 2 == 0) {
a = a / 2;
}
else if (a % 2 == 1) {
a = 3*a + 1;
a = a / 2;
}
}
printf("%d", i);
return 0;
}
#include<stdio.h>
void recursion(int a, int i) {
if (a != 1)
{
if (a % 2 == 1)
{
recursion((3 * a + 1) / 2, ++i);
}
if (a % 2 == 0)
{
recursion(a / 2, ++i);
}
}
else {
printf("%d", i);
}
}
int main() {
int a;
scanf("%d", &a);
recursion(a,0);
}