以任何正整数N开头,将对应于n的Collatz序列定义为以下操作形成的数字:
- 如果n为偶数,则n = n / 2。
- 如果n为奇数,则n = 3 * n + 1。
- 重复上述步骤,直到变为1。
例子 :
Input : 3
Output : 3, 10, 5, 16, 8, 4, 2, 1
Input : 6
Output : 6, 3, 10, 5, 16, 8, 4, 2, 1
下面是实现:
C++
// CPP program to print Collatz sequence
#include
using namespace std;
void printCollatz(int n)
{
// We simply follow steps
// while we do not reach 1
while (n != 1)
{
cout << n << " ";
// If n is odd
if (n & 1)
n = 3*n + 1;
// If even
else
n = n/2;
}
// Print 1 at the end
cout << n;
}
// Driver code
int main()
{
printCollatz(6);
return 0;
}
Java
// Java program to print
// Collatz sequence
import java.io.*;
class GFG
{
static void printCollatz(int n)
{
// We simply follow steps
// while we do not reach 1
while (n != 1)
{
System.out.print(n + " ");
// If n is odd
if ((n & 1) == 1)
n = 3 * n + 1;
// If even
else
n = n / 2;
}
// Print 1 at the end
System.out.print(n);
}
// Driver code
public static void main (String[] args)
{
printCollatz(6);
}
}
// This code is contributed
// by akt_mit
Python3
# Python 3 program to print
# Collatz sequence
def printCollatz(n):
# We simply follow steps
# while we do not reach 1
while n != 1:
print(n, end = ' ')
# If n is odd
if n & 1:
n = 3 * n + 1
# If even
else:
n = n // 2
# Print 1 at the end
print(n)
# Driver code
printCollatz(6)
# This code is contributed
# by vaibhav29498
C#
// C# program to print Collatz sequence
using System;
class GFG {
static void printCollatz(int n)
{
// We simply follow steps
// while we do not reach 1
while (n != 1)
{
Console.Write (n + " ");
// If n is odd
if ((n & 1) == 1)
n = 3 * n + 1;
// If even
else
n = n / 2;
}
// Print 1 at the end
Console.Write (n);
}
// Driver code
static void Main()
{
printCollatz(6);
}
}
// This code is contributed by
// Manish Shaw (manishshaw1)
PHP
Javascript
输出
6 3 10 5 16 8 4 2 1