C语言数列如何加速太慢

C语言数列如何加速太慢,第1张

#include <stdio.h>

unsigned int Fibonacci(int n)

int main(void) {

    int n

    while (scanf ("%d", &n), n > 0) {

        printf("%u\n",Fibonacci(n))

    }

    return 0

}

unsigned int Fibonacci(int n) {

    if (n <= 0) return 0

    if (n == 1 || n == 2) return 1

    else {

        int a[2] = {1, 1}, i = 3

        while (i <= n) {

            a[i % 2] = a[i % 2] + a[(i - 1) % 2]

            i++

        }

        return a[(i - 1) % 2]

    }

}

其实这不需要递归,稍微变一下算法就行了。另外,你的printf里的格式字符串错了,应该是"%u"而不是"%d"。

通过以下代码获取文件大小,然后分配相应大小的内存,一次性读取文件到此内存就可以加快读取速度了。具体代码如下:

#include <stdio.h>

#include <stdlib.h>

int main ()

{

FILE * pFile

long lSize

char * buffer

size_t result

/* 若要一个byte不漏地读入整个文件,只能采用二进制方式打开 */

pFile = fopen ("test.txt", "rb" )

if (pFile==NULL)

{

fputs ("File error",stderr)

exit (1)

}

/* 获取文件大小 */

fseek (pFile , 0 , SEEK_END)

lSize = ftell (pFile)

rewind (pFile)

/* 分配内存存储整个文件 */

buffer = (char*) malloc (sizeof(char)*lSize)

if (buffer == NULL)

{

fputs ("Memory error",stderr)

exit (2)

}

/* 将文件拷贝到buffer中 */

result = fread (buffer,1,lSize,pFile)

if (result != lSize)

{

fputs ("Reading error",stderr)

exit (3)

}

/* 现在整个文件已经在buffer中,可由标准输出打印内容 */

printf("%s", buffer)

/* 结束演示,关闭文件并释放内存 */

fclose (pFile)

free (buffer)

return 0

}

42步进电机是一个两相电机,一般控制可以分为全步或半步控制,全步控制,每一切换相序,步进电机走1.8度,半步控制则走0.9度。

全步控制相序分配为:A,/A,B,/B

半步控制相序分配为:A,AB,B,B/A,/A,/A/B,/B,/BA

加速的话,就使相序切换快一点就可以;当然减速就是相序切换慢点就行。举例如下:

#include<reg51.h>

#define uchar unsigned char

uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09}

uchar num=0,fx=0

sbit keyup=P3^0

sbit keydn=P3^1

sbit keyfx=P3^2

int speed=10000

void t0isr() interrupt 1

{

TH0=(65536-speed)/256

TL0=(65536-speed)%256

P2=stepd[num]

if(fx==0){num++num%=8}

if(fx==1)

{

if(num==0)num=7

else num--

}

}

main()

{

TMOD=0x01

TH0=(65536-10000)/256

TL0=(65536-10000)%256

TR0=1

ET0=1

EA=1

while(1)

{

if(keyup==0)

{

while(key1==0)

speed-=10

}

if(keydn==0)

{

while(keydn==0)

speed+=10

}

if(key3==0)

{

while(key3==0)

fx=~fx

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7763060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存