c++中,用fork创建子进程,在子进程中输出角谷猜想的序列
时间: 2023-05-24 13:06:01 浏览: 133
角谷猜想是指对于任意自然数n,若n为偶数,则将n除以2;若n为奇数,则将n乘3加1。经过若干次操作后,总能得到n=1的结果。
实现代码如下:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
int n = 11; //测试用例
pid = fork(); //创建子进程
if (pid == -1) //失败
{
printf("Create child process error!\n");
return 1;
}
else if (pid == 0) //子进程
{
printf("%d ", n); //输出初始值
while (n != 1) //循环输出序列
{
if (n % 2 == 0)
{
n /= 2;
}
else
{
n = n * 3 + 1;
}
printf("%d ", n);
}
printf("\n");
}
else //父进程
{
wait(NULL); //等待子进程结束
}
return 0;
}
运行结果如下:
11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
说明角谷猜想在该测试用例下成立。
阅读全文