带C的Fibonacci函数

带C的Fibonacci函数,c,function,integer,switch-statement,fibonacci,C,Function,Integer,Switch Statement,Fibonacci,我想计算斐波那契序列的第I个句子: #include <stdio.h> int fibo(int i); int main() { return 0; } int fibo(int i) { switch (i) { case 1: return 0; break; case 2: return 1; break; default: int a =

我想计算斐波那契序列的第I个句子:

#include <stdio.h>

int fibo(int i);

int main()
{
    return 0;
}

int fibo(int i)
{
    switch (i)
    {
    case 1:
        return 0;
        break;
    case 2:
        return 1;
        break;
    default:
        int a = 0, b = 1;
        for (int p = 3; p <= i; p++)
        {
            b += a;
            a = b - a;
        }
        return b;
        break;
    }
}
我在IDE中使用VS代码。

#包括
  #include <stdio.h>
    int fibo(int i);
    int main()
    {
        return 0;
    }
    int fibo(int i)
    {
        int a = 0, b = 1;
        switch (i)
        {
        case 1:
            return a;
            break;
        case 2:
            return b;
            break;
        default:
            for (int p = 3; p <= i; p++)
            {
                b += a;
                a = b - a;
            }
            return b;
            break;
        }
    }
intfibo(inti); int main() { 返回0; } int fibo(int i) { INTA=0,b=1; 开关(一) { 案例1: 返回a; 打破 案例2: 返回b; 打破 违约:
对于C中的(int p=3;p,在
switch
语句中,在
case
中,要有局部变量,
case
的主体必须用大括号“{”和“}”括起来“

C语法不允许标记声明。
默认值:
大小写:
是标签。有3种方法可以解决代码中的问题:

  • 将声明移到
    开关的主体之外
    语句:

    int fibo(int i) {
        int a, b;
        switch (i) {
        case 1:
            return 0;
        case 2:
            return 1;
        default:
            a = 0, b = 1;
            for (int p = 3; p <= i; p++) {
                b += a;
                a = b - a;
            }
            return b;
        }
    }
    
  • 对于负数,您可能也应该返回
    0
    。只需将代码简化为:

    int fibo(int i) {
        int a = 1, b = 0;
        while (i-- > 0) {
            b += a;
            a = b - a;
        }
        return b;
    }
    

错误消息完全正确。大小写标签就是标签。这可能对您有帮助:关于:
int main(){return 0;}
这无法调用函数:
fibo()
因此函数将永远不会执行变量
i
从未设置,从未声明,(这应该在
main()中完成)
因此代码将不会编译。注意:斐波那契序列以1、1、2、3、5、8…开头。发布的代码不会实现该序列
int fibo(int i) {
    switch (i) {
    case 1:
        return 0;
    case 2:
        return 1;
    default: {
            int a = 0, b = 1;
            for (int p = 3; p <= i; p++) {
                b += a;
                a = b - a;
            }
            return b;
        }
    }
}
int fibo(int i) {
    switch (i) {
    case 1:
        return 0;
    case 2:
        return 1;
    default:;  // this is a null statement
        int a = 0, b = 1;
        for (int p = 3; p <= i; p++) {
            b += a;
            a = b - a;
        }
        return b;
    }
}
int fibo(int i) {
    switch (i) {
    case 0:
        return 0;
    default:;  // this is a null statement
        int a = 1, b = 1;
        for (int p = 2; p < i; p++) {
            b += a;
            a = b - a;
        }
        return b;
    }
}
int fibo(int i) {
    int a = 1, b = 0;
    while (i-- > 0) {
        b += a;
        a = b - a;
    }
    return b;
}