C开关盒具有功能

Nig*_*ker -1 c function switch-statement

谁能解释一下这段代码?我无法理解为什么此代码中的打印值为8

有人可以向我解释

#include <stdio.h>


int f(int i){
    switch (i){
        case 0 :
            return 0;
        case 1:

        case 2:
            return 1;
        default:

            return f(i-2)+f(i-1);
    }
}


void main(void) {

printf("%d", f(6));

}
Run Code Online (Sandbox Code Playgroud)

小智 6

也许您只需要在调试运行中逐步执行代码,但这就是您拥有的原因 f(6)=8

step1: f(6)
step2: f(6-2)              +f(6-1)
step3: f(4-2)+f(4-1)       +f(5-2)       +f(5-1)
step4: f(2)  +f(3-2)+f(3-1)+f(3-2)+f(3-1)+f(4-2)+f(4-1)
step5: 1     +1     +1     +1     +1     +1     +f(3-2)+f(3-1)
step6: 1     +1     +1     +1     +1     +1     +1     +1
final: 8
Run Code Online (Sandbox Code Playgroud)