MST
星途 面试题库

面试题:C语言复杂条件控制下的函数递归

编写一个C语言函数,使用递归方法计算斐波那契数列中第n项的值,但要求在计算过程中,当n为偶数时,输出当前计算到的是偶数项并继续计算;当n为奇数时,跳过该项计算直接计算下一项(可以通过打印信息体现跳过)。例如,计算第6项,需输出计算偶数项信息,最终返回第6项斐波那契数的值。
27.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 递归函数计算斐波那契数列
int fibonacci(int n) {
    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        if (n % 2 == 0) {
            printf("计算偶数项: %d\n", n);
            return fibonacci(n - 1) + fibonacci(n - 2);
        } else {
            printf("跳过奇数项: %d\n", n);
            return fibonacci(n - 1);
        }
    }
}

int main() {
    int n = 6;
    int result = fibonacci(n);
    printf("第 %d 项斐波那契数的值为: %d\n", n, result);
    return 0;
}

上述代码实现了以下功能:

  1. fibonacci函数
    • 采用递归的方式计算斐波那契数列。
    • n为偶数时,打印当前正在计算偶数项的信息,并通过递归调用fibonacci(n - 1)fibonacci(n - 2)来计算当前偶数项的值。
    • n为奇数时,打印跳过奇数项的信息,并直接递归调用fibonacci(n - 1)计算下一项。
  2. main函数
    • 设定要计算的斐波那契数列的项数n为6。
    • 调用fibonacci函数计算并输出第n项斐波那契数的值。