c_cpp フィボナッチ数列をどこまで小さく记述できるかin C ref:http://qiita.com/maekawatoshiki/items/b1cba7600d3dbd634a79
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp フィボナッチ数列をどこまで小さく记述できるかin C ref:http://qiita.com/maekawatoshiki/items/b1cba7600d3dbd634a79相关的知识,希望对你有一定的参考价值。
int main(){int a=0,b=1,i=35;while(i--)printf("%d\n",(i&1)?(a+=b):(b+=a));}
// 偶数か奇数かの判定
if(i % 2 == 0) // Cでは、0以外はTrueなので
if(i % 2) // にできる。スペースを抜いてBit演算化すると。
if(i&1) // となる。だいぶコンパクトになった。
// { ~ } の消去
// for や if は文が一文のときは{ }を省略できるので。
for(i = 1; i <= x; i++)
{
if(i % 2 == 0)
a += b;
else
b += a;
}
// の用なものは
for(i = 1; i <= x; i++)
if(i % 2 == 0)
a += b;
else
b += a;
// にできる。
// 三項演算子を使えば
if(i % 2 == 0)
a += b;
else
b += a;
// は
(i&1)?(a+=b):(b+=a)
// にできる。
// これだけ小さければ、printf に組み込めるかも?
// やってみた。
printf("%d\n",(i&1)?(a+=b):(b+=a));
// いいね。 ifがいらなくなったので
for(i = 1; i <= x; i++)
printf("%d\n",(i&1)?(a+=b):(b+=a));
// となった。
// 関数も取っ払っちゃおう。
#include <stdio.h>
int main()
{
int i, a=1, b=0;
for(i = 1; i <= 35; i++)
printf("%d\n",(i&1)?(a+=b):(b+=a));
return 0;
}
// for 文が無駄なので、
#include <stdio.h>
int main()
{
int i=35, a=0, b=1;
while(i--)
printf("%d\n",(i&1)?(a+=b):(b+=a));
return 0;
}
// とした。
#include <stdio.h>
int fibo(int x)
{
int i, a = 1, b = 1;
for(i = 1; i <= x; i++)
{
if(i % 2 == 0)
a += b;
else
b += a;
}
return (i % 2 == 0) ? a : b;
}
int main()
{
int i;
for(i = 0; i < 35; i++)
{
printf("%d\n", fibo(i));
}
return 0;
}
#include <stdio.h>
int fibo(int x)
{
if(x < 2)
return 1;
else
return fibo(x - 2) + fibo(x - 1);
}
int main()
{
int i;
for(i = 0; i < 35; i++)
{
printf("%d\n", fibo(i));
}
return 0;
}
以上是关于c_cpp フィボナッチ数列をどこまで小さく记述できるかin C ref:http://qiita.com/maekawatoshiki/items/b1cba7600d3dbd634a79的主要内容,如果未能解决你的问题,请参考以下文章