这是预期的输出:
替代文字http://i48.tinypic.com/f1lfuh.jpg
我们要制作一个计算Fibonacci序列的C程序.我们最多只允许3个变量,我们不允许使用循环.而且我不知道该怎么做以及如何开始.
我希望你们能帮助我.:/
Jer*_*myP 22
假设您使用32位无符号整数,第48个Fibonacci数将导致整数溢出.这使得使用具有预先计算的所有值(手动)的查找表是完全可行的.
Svi*_*ack 17
使用递归:

C/C++语言版本:
int fib(int a)
{
    if (a == 0) return 0;
    if (a == 1) return 1;
    return fib(a - 1) + fib(a - 2);
}
应用此答案评论的建议:
C语言版本:
/*
 * -1 is a error handler
 */
int fib(int a)
{
    if (a < 0 || a > 47) return -1;
    if (a == 0) return 0;
    if (a == 1) return 1;
    return fib(a - 1) + fib(a - 2);
}
C++语言版本:
int fib(int a)
{
    if (a < 0) throw new std::out_of_range("Fibonacci is not defined for negative sign values.");
    if (a > 47) throw new std::overflow_error("Fibonacci for this value was overflow the integer.");
    if (a == 0) return 0;
    if (a == 1) return 1;
    return fib(a - 1) + fib(a - 2);
}
如果不允许循环和递归,请选择斐波那契序列定义并手工完成......这是无聊的无聊和无趣,但它是这些限制中最直接的解决方案.
a = 0; // 0
b = 1; // 1
a = a + b; // 1
b = a + b; // 2
a = a + b; // 3
b = a + b; // 5
等等:b保存第n个和第(n-1)个数字.(复制粘贴a = a+b; b = a+b;你需要多少次......)允许复制粘贴代码片段?
......(编辑)......
当然,这个答案只是展示了如果我们放了太多的rescrictions可以得到多少可笑的东西.如果你不知道递归,你必须明确地学习它.或坚持精细数学(如其他答案所示),但递归是程序员应该知道的强大工具,并且递归方法比使用数学"技巧"更直观.