如何产生这个数字序列?

proof1 2016-11-22 03:42:49

变量 X=1

如何产生以下序列?(使X按序列值变化)
+1, 0, -1, 0, +1, 0, -1, 0, +1, ……

不要For循环, 越简单直接越好。可引入辅助整形变量a,b,c,比如这类形式:
a=-1
X=X+a^X

PS:这个问题是《组合数学》学科研究范围吗?
...全文
522 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
proof1 2016-11-24
  • 打赏
  • 举报
回复
(3)手工串行循环 初始化: X=1, a=0, b=-1, c=0, Temp 调用部分: Temp=X X=a a=b b=c c=Temp PS:我说的不允许For循环,引起了许多误解。 真实意思是:For循环本身不参与生成算法过程。但是循环变量i可以是算法中的参数,以模拟每次调用算法时不同的参数。
赵4老师 2016-11-23
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
AlbertS 2016-11-23
  • 打赏
  • 举报
回复
我还是感觉cos快一点

int n = 0;
int val = cos(PI/2*n);
++n;
proof1 2016-11-23
  • 打赏
  • 举报
回复
感谢各位。 (1) 引入数组,索引取值 A[0]=1 A[1]=0 A[2]=-1 A[3]=0 n++ X=A[n%4] (2)语句实现 // 初始化 X=1 a=0 b=1 // 重复调用部分 swap(a,b) //交换a,b变量值 if (a==0) X=a else X=X*(-1)
shiter 2016-11-23
  • 打赏
  • 举报
回复
肯定是for循环这个快点吧,我猜测
FancyMouse 2016-11-23
  • 打赏
  • 举报
回复
x=Re(i^n)(i^n的实部) n=0,1,2,... 本质和cos同一回事。
  • 打赏
  • 举报
回复
没有愤怒啊,只是觉得“cos快一点”太离谱。
AlbertS 2016-11-23
  • 打赏
  • 举报
回复
引用 16 楼 DelphiGuy 的回复:
[quote=引用 14 楼 shihengzhen101 的回复:] 我还是感觉cos快一点

int n = 0;
int val = cos(PI/2*n);
++n;
一个cos就相当于几百条mov、lea、add之类的指令,你这里还有浮点除法... [/quote] 你不要愤怒啊
  • 打赏
  • 举报
回复
引用 14 楼 shihengzhen101 的回复:
我还是感觉cos快一点

int n = 0;
int val = cos(PI/2*n);
++n;
一个cos就相当于几百条mov、lea、add之类的指令,你这里还有浮点除法...
  • 打赏
  • 举报
回复
要循环输出,简单点就用switch while for 递归来输出
zhaopeng2511 2016-11-22
  • 打赏
  • 举报
回复

#include <stdio.h>

#define N	100

void main(void)
{
	int a[4] = {1,0,-1,0};

	int i = 0;
	while(i<N)
	{
		printf("%d",a[i%4]);
		if (i+1 < N)
		{
			printf(",");
		}
		i++;
	}
	getchar();
}
不要for循环,那就用while循环呗
zhaopeng2511 2016-11-22
  • 打赏
  • 举报
回复

#include <stdio.h>

#define N	100

void main(void)
{
	int a[4] = {1,0,-1,0};

	for(int i=0;i < N;i++)
	{
		printf("%d",a[i%4]);
		if (i+1 < N)
		{
			printf(",");
		}
	}
	getchar();
}
July树树 2016-11-22
  • 打赏
  • 举报
回复
引用 5 楼 proof1的回复:
[quote=引用 3 楼 July541 的回复:] 用cos啊。
用三角函数还是笨点。不好意思。
引用 4 楼 DelphiGuy 的回复:
A1=1 An=An-1 + 1 (n % 4 = 0, 1) An=An-1 - 1 (n %4 = 2, 3)
没看明白。 n 模 4 ? 在0,1,2,3之间循环?[/quote] 你来个不笨的看看??
  • 打赏
  • 举报
回复
引用 5 楼 proof1 的回复:
[quote=引用 4 楼 DelphiGuy 的回复:] A1=1 An=An-1 + 1 (n % 4 = 0, 1) An=An-1 - 1 (n %4 = 2, 3)
没看明白。 n 模 4 ? 在0,1,2,3之间循环?[/quote] int A(int n) { if (n < 1) return 1; switch (n %4) { case 0: return 0; case 1: return 1; case 2: return 0; case 3: return -1; } }
proof1 2016-11-22
  • 打赏
  • 举报
回复
引用 1 楼 sunyongliang118 的回复:
你这儿是要写通项公式吗?
差不多吧。 条件比通项公式放松些,可以用几个语句来实现。
proof1 2016-11-22
  • 打赏
  • 举报
回复
引用 3 楼 July541 的回复:
用cos啊。
用三角函数还是笨点。不好意思。
引用 4 楼 DelphiGuy 的回复:
A1=1 An=An-1 + 1 (n % 4 = 0, 1) An=An-1 - 1 (n %4 = 2, 3)
没看明白。 n 模 4 ? 在0,1,2,3之间循环?
  • 打赏
  • 举报
回复
A1=1 An=An-1 + 1 (n % 4 = 0, 1) An=An-1 - 1 (n %4 = 2, 3)
July树树 2016-11-22
  • 打赏
  • 举报
回复
用cos啊。
July树树 2016-11-22
  • 打赏
  • 举报
回复
用cos啊。
振翅高飞 2016-11-22
  • 打赏
  • 举报
回复
你这儿是要写通项公式吗?

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧