小编ASh*_*lly的帖子

算法效率 - 如果需要更多比较,部分展开循环是否有效?

如何判断在迭代中放入两个额外的赋值是否昂贵,或者设置if条件来测试另一个东西?在这里我详细说明.问题是生成并打印Fibonacci序列的前n个项,其中n> = 1.我在C中的工具是:

#include<stdio.h>
void main()
{
    int x=0,y=1,output=0,l,n;
    printf("Enter the number of terms you need of Fibonacci Sequence ? ");
    scanf("%d",&n);
    printf("\n");
    for (l=1;l<=n;l++)
    {
        output=output+x;
        x=y;
        y=output;
        printf("%d ",output);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是"如何通过计算机解决它"这本书的作者说这是低效的,因为它对生成的单个斐波纳契数使用了两个额外的赋值.他建议:

a=0
b=1
loop: 
print a,b
a=a+b
b=a+b
Run Code Online (Sandbox Code Playgroud)

我同意这更有效,因为它始终保持a和b相关,并且一个赋值生成一个数字.但它一次打印或提供两个斐波那契数字.假设问题是生成奇数个术语,我们会做什么?作者建议设置一个测试条件来检查n是否为奇数.通过在每次迭代中添加if测试,我们不会失去减少分配数量的收益吗?

algorithm fibonacci micro-optimization

1
推荐指数
1
解决办法
591
查看次数

这个javascript动画不应该产生正弦波运动吗?

我正在做一个小的JavaScript动画,希望小小的div可以沿着正弦波移动,并且目前水平路径工作正常(只是直线).我几乎可以肯定我的Y轴的数学公式是错误的.我试图用我发现的一些例子来纠正它,但它们都没有为我工作.在我尝试的所有可能性中,Y轴被忽略,小盒子只是水平移动.

我怎么能解决这个问题,所以这个动作沿着正弦波传播?我知道使用jQuery或使用html 5可以更容易地做到这一点,但我只是想知道我的原始代码有什么问题...如果可能的话我宁愿解决这个问题.

function animate() {
    xnow = item.style.left;
    item.style.left = parseInt(xnow)+1+'px';
    ynow = item.style.top;
    item.style.top = ynow + (Math.sin((2*Math.PI*xnow)/document.width))*document.heigth;
    setTimeout(animate,20); 
}
Run Code Online (Sandbox Code Playgroud)

这里的完整代码: JSFiddle

javascript animation trigonometry

1
推荐指数
2
解决办法
1815
查看次数

Python Argparse将文本添加到使用消息

我正在开发一个小型Python程序,需要获取一些命令行参数并使用argparse来显示用法消息.我有这2行

parser.add_argument("-r",type=int,default=1)
parser.add_argument("-c",type=int,default=2)
Run Code Online (Sandbox Code Playgroud)

并且要求是我向用户显示以下消息:

*usage: myprogram.py [-h]  [-r ROWS] [-c COLUMNS]* 
Run Code Online (Sandbox Code Playgroud)

然而,我向用户展示的是 -

*usage: myprogram.py [-h] [-r R] [-c C]*
Run Code Online (Sandbox Code Playgroud)

如何将[-r R]转换为[-r ROW](并以相同的方式[-c C]转换[-c COLUMNS])?

我已经看了很多argsparse文档但没有用...

python argparse usage-message

1
推荐指数
1
解决办法
849
查看次数

如何查找已从master中删除的本地git分支

在我们的工作流程中,生产就绪的开发分支被推送到远程跟踪存储库,在那里它们被合并到主服务器中.测试通过时删除分支.

我一直不好删除这些开发分支的本地版本,所以现在我有很多本地分支,它们没有相应的分支.

有没有一种快速方法可以找到我的存储库中的哪些分支已从远程存储库中删除?

git

1
推荐指数
1
解决办法
264
查看次数

如何在Code :: Blocks中生成汇编列表?

我们可以在C程序的代码块中生成一个汇编文件,就像我们为微控制器编写C代码时生成列表文件一样吗?

c gcc codeblocks

1
推荐指数
1
解决办法
7457
查看次数

为什么time.sleep在传递True时不会抱怨?

所以我只是追踪我的Python程序中的一个奇怪的错误,这个错误是由于我将一个函数的参数混淆并错误地传递True给我time.sleep().Python似乎默默地转换True1

文件说:

暂停执行给定的秒数.参数可能是浮点数...

通常,当输入与预期的类型或范围不匹配时,Python很乐意抛出异常.为什么要sleep 静默转换True为数字?

python sleep

1
推荐指数
1
解决办法
89
查看次数

C中的Printf混淆

我是一个初学者C,和我遇到了一些麻烦格式化一个简单的printf函数,它接受两个整数,ab和打印出来a^2 + b^2 = c,在这里我给你ca*a + b*b..

话虽这么说,我不确定C的printf语句的参数是如何工作的,这就是我写的:

printf("%i,a ^2 + (%i,b) ^2 = %i,c", a, b, c);
Run Code Online (Sandbox Code Playgroud)

这就是它的印刷品

3,a ^2 + (4,b) ^2 = 25,c10,a ^2 + (10,b) ^2 = 200,c
Run Code Online (Sandbox Code Playgroud)

哪个不太远,我只是不知道如何摆脱丑陋的变量和括号,如(4,b)

这就是它应该是什么样子.我知道我在某处也错过了一个"\n".

3^2 + 4^2 = 25
10^2 + 10^2 = 200
Run Code Online (Sandbox Code Playgroud)

c printf

0
推荐指数
1
解决办法
104
查看次数

标识符枚举未定义

好的,我看到这是一个相当普遍的问题,但我找不到与我的问题类似的问题。

我不断遇到问题

identifier "Baserate" is undefined
Run Code Online (Sandbox Code Playgroud)

我将其定义为

时间

#include "tim_api.h"
enum Baserate {
 Rate_62_5ns = 0x0,
 Rate_125ns = 0x1,  
 Rate_250ns = 0x2,  
 Rate_500ns = 0x3, 
 Rate_1us = 0x4,    
 Rate_2us = 0x5,    
 Rate_4us = 0x6,    
 Rate_8us = 0x7,    
 Rate_16us = 0x8
};
Run Code Online (Sandbox Code Playgroud)

问题是当我定义它使用的函数时

tim_api.h

extern void TIM_Set_Period_ns(int Timer_Select, Baserate Set_Baserate, int Period);  
Run Code Online (Sandbox Code Playgroud)

这是我在构建嵌入式 c 程序时,但是当我在 ac consol 应用程序中运行它时,它可以工作

void TIM_Enable(Baserate my_baserate, void (*callback_function)());
int _tmain(int argc, _TCHAR* argv[])
{
TIM_Enable(Rate_62_5ns,prnt0);  
while(1);
return 0;
}


void TIM_Enable(Baserate my_baserate,void (*callback_function)())
{
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为什么相同的 …

c

0
推荐指数
1
解决办法
5539
查看次数