当前位置:首页 » 编程语言 » 角谷猜想c语言

角谷猜想c语言

发布时间: 2022-04-15 01:31:06

编程求助!!c语言怎么用递归方法解决角谷猜想

你的程序这样改
#include "stdio.h"
int F(int a)
{
if (a==1) return 1;
if (a%2) return 1+F(3*a+1);
else return 1+F(a/2);
}

void main()
{
int a=0;
scanf("%d",a);
printf("%d",F(a));
}

有的数字递归次数很长导致堆栈溢出
我是这样算的,可以一次算出1~n的循环步数
有到ProjectEuler题目就是这个

#include<iostream>
#include<math.h>
using namespace std;
#define N 100
int a[N+1]={0};

int f(int n);

void main()
{
int i=1;
a[1]=1;
for(i=1;i<=N;i++)
a[i]=f(i);
for(i=1;i<=N;i++)
cout<<i<<" "<<a[i]<<endl;
}

int f(int n)
{
if(n<=N&&a[n])
return a[n];
else
{
if(n%2)
return 1+f(n*3+1);
else
return 1+f(n/2);
}
}

❷ 请问谁知道“角谷猜想”怎么作(C语言编程)

#include "stdlib.h"
#include "stdio.h"
#include "conio.h"
void main()
{
/*
角谷猜想
(1)当自然数N是奇数时,下一步变为 3N+1.
(2)当自然数N是偶数时,下一步变为 N除以2.
*/
int a,b,temp;
printf("请输入你所要验证的范围\n");
printf("请输入起始整数\n");
scanf("%d",&b);
printf("请输入起始整数\n");
scanf("%d",&a);
for(;b<=a;b++)
{
temp=b;
while(temp!=1)
{
printf("%d ",temp);
if(temp%2 == 0)
{
temp/=2;
}
else
{
temp=3*temp+1;
}
}
printf("%d\n\n",temp);
}
printf("恭喜,你所输入的范围所有整数验证完毕\n");

}

❸ C语言作业,角谷问题

#include <stdio.h>

int main()

{int x,x1;

scanf("%d",&x);

while(x!=1)

{if(x%2)

{x1=3*x1+1;

printf("%d*3+1=%d ",x,x1);

}

else

{x1=x/2;

printf("%d/2=%d ",x,x1);

}

x=x1;

}

return 0;

}

❹ C语言编写角谷猜想,错代码什么意思

E:\c++
6.0\100题\bh0260.c(25)
:
error
C2059:
syntax
error
:
'bad
suffix
on
number'
错误的下标数字用法
我晕。。。问题出在3n+1....
是3*n+1...而且,根据你提供的算法,这里应该还得赋值,
main()
{
int
n;
printf("输入一个正整数:");
scanf("%d",n)
;
/////这里你忘加了分号
while(n>0)
{
if(n%2==0)
{
n/=2;
///////
这里要改成n/=2
printf("%d\n",n);
}
else
{
n=3*n+1;
/////////这里得是赋值语句
printf("%d\n",n);
////括号里的变量改为n
}
}
}
算法给你改好了,自己调试吧
//////////////////////////////
不好意思,还有个地方漏改了,
while(n>1)改成这个
n/=2和n%=2有什么区别?一个是除法一个是取余运算符,怎么会一样呢,这个其实是一种简写方法,完全分别等同于n=n/2;和n=n%2,就是这个意思。
////////////////////////////////
算了我把完整的代码贴给你好了,再运行不了就见鬼了。。
#include
<stdio.h>
main()
{
int
n;
printf("输入一个正整数:\n");
scanf("%d",&n)
;
/////这里你忘加了分号
while(n>1)
{
if(n%2==0)
{
n/=2;
///////
这里要改成n/=2
printf("%d\n",n);
}
else
{
n=3*n+1;
/////////这里得是赋值语句
printf("%d\n",n);
////括号里的变量改为n
}
}
return
0;
}

❺ 角谷猜想,C语言,输出过程

代码比较简单,各语句意义见注释。。。

#include<stdio.h>

intmain(intargc,char*argv[])

{

inti;/*定义要处理的变量*/

scanf("%d",&i);/*输入变量值*/

while(i!=1)

{

if(i%2)/*奇数*/

{

printf("%d*3+1=%d ",i,i*3+1);/*按题目要求的格式打印出来*/

i=i*3+1;/*更新变量值*/

}

else/*偶数*/

{

printf("%d/2=%d ",i,i/2);/*按题目要求的格式打印出来*/

i=i/2;/*更新变量值*/

}

}

printf("END ");/*最后打印END*/

return0;

}

另外几个测试结果图片:

❻ c++编程验证“角谷猜想”

#include<stdio.h>
int
main()
{
int
n,count=0;
printf("Please
enter
number:");
scanf("%d",&n);
/*输入任一整数*/
do{
if(n%2)
{
n=n*3+1;
/*若为奇数,n乘3加1*/
printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);
}
else
{
n/=2;
/*若为偶数n除以2*/
printf("[%d]:
%d/2=%d\n",++count,2*n,n);
}
}while(n!=1);
/*n不等于1则继续以上过程*/
}
以上是c语言的,再给你弄个c++的
#include<iostream>
using
namespace
std;
int
main()
{
int
n,count=0;
cout<<"Please
enter
number:";
cin>>n;
/*输入任一整数*/
do{
if(n%2)
{
n=n*3+1;
/*若为奇数,n乘3加1*/
++count;
cout<<"["<<count<<"]:"<<(n-1)/3<<"*3+1="<<n<<endl;
}
else
{
n/=2;
/*若为偶数n除以2*/
++count;
cout<<"["<<count<<"]:"<<2*n<<"/2="<<n<<endl;
}
}while(n!=1);
/*n不等于1则继续以上过程*/
}

❼ C语言 角谷猜想 要求验证角谷猜想,从键盘上输入一个自然数n,输出所有n到1经历的所有数。

没用过C语言 用python给你写一个 你可以照着改改

num=6
print(num,end='')
while(num!=1):
if(num%2)==0:#偶数
num=num//2
else:#奇数
num=num*3+1
print(num,end='')#63105168421

❽ 求角谷猜想C语言程序,输入一个正整数,输出此整数回到1经过的步数,n<=10000

#include<stdio.h>
main()
{
int n,c=0;
printf("输入一个小于等于一万的整数:");
scanf("%d",&n);
if(n>10000&&n<0) printf("输入错误请重新输入!");
while(n!=1)
{
if(n%2==0)
n=n/2;
else
n=n*3+1;
c++;
}
printf("%d\n",c);
}

❾ 角谷猜想 c语言

#include<stdio.h>
int main()
{
int n, t, m = 0;
scanf("%d", &n);
t = n;
printf("%d ", t);
while(t != 1)
{
if(t % 2)
t = t * 3 + 1;
else
t /= 2;
m++;
printf("%d ", t);
}
printf("\n%d calculate %d times,the answer become to 1!\n", n, m);
return 0;
}

❿ c语言与角谷猜想

#include<stdio.h>
main()
{int
a,b,count;
printf("请输入a的值,以便检验角谷猜想。\na=");
scanf("%d",&a);
b=a;
while
(a!=1)
{if
(a>1&&a%2==0)
{a=a/2
;printf
("→%d\n",a);}
else
{a=3*a+1;printf("→%d\n",a);}
count++;}printf("%d需经过%d步才得到1.",b,count);}
//如果能够逆推出,比方说,23的下一步是70,那么都有哪些数的下一步是70?如此逆推,就能写成一棵"数论树".

热点内容
微信视频如何重新缓存 发布:2025-01-21 04:44:41 浏览:879
pdf压缩文件大小 发布:2025-01-21 04:40:24 浏览:798
linux解压文件到指定 发布:2025-01-21 04:38:36 浏览:874
自己做的安卓app怎么下载 发布:2025-01-21 04:35:07 浏览:163
机顶盒加密频道 发布:2025-01-21 04:26:48 浏览:318
腾讯应用加密 发布:2025-01-21 04:24:38 浏览:988
无法访问f 发布:2025-01-21 04:24:36 浏览:539
sql实时 发布:2025-01-21 04:24:27 浏览:998
怎么在linux服务器上配ip地址 发布:2025-01-21 04:22:10 浏览:251
咖搭姆编程 发布:2025-01-21 04:19:45 浏览:674