以后我每学一门语言,都要用这种语言把这道题写一遍。
Go版
package main
import "fmt"
func main(){
var n, step int
fmt.Scanf("%d", &n)
for ;n != 1;{
if n % 2 == 1{
n = (3*n+1)/2
}else{
n = n/2
}
step++
}
fmt.Println(step)
}
C/C++版
#include<cstdio>
int main(){
int n;
scanf("%d",&n);
int cnt=0;
while(n!=1){
if(n&1) n=(3*n+1)/2;
else n=n/2;
cnt++;
}
printf("%d",cnt);
return 0;
}
Python版
n = int(input())
cnt = 0
while n != 1:
if(n&1): #位运算,如果是奇数结果就为1,偶数就为0
n=(3*n+1)//2 #这里两个斜杠表示整除
cnt+=1
else:
n=n//2
cnt+=1
print(cnt)
Java版
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int step = 0;
while(n!=1) {
if(n%2==1) {
n=(3*n+1)>>1;
}else {
n=n>>1;
}
step++;
}
System.out.println(step);
}
}