c语言递归试题及答案
递归是一种在函数中调用自身的编程技巧。在学习C语言时,递归是一个重要的概念,掌握递归的用法对于解决问题非常有帮助。本文将介绍一些常见的C语言递归试题,并提供详细的答案解析。
一、计算阶乘
题目:编写一个递归函数,计算给定正整数n的阶乘。
答案:
```c
#include <stdio.h>
int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}
int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    printf("%d的阶乘为:%d\n", n, factorial(n));
    return 0;
}
```
解析:该程序定义了一个递归函数factorial,当n为0时,递归结束,返回1;否则,返回n与factorial(n-1)的乘积。在主函数中,用户输入一个正整数n,调用factorial函数进行阶乘计算并输出结果。
二、斐波那契数列
题目:编写一个递归函数,计算给定正整数n的斐波那契数列值。
答案:
```c
#include <stdio.h>
int fibonacci(int n) {
c语言斐波那契数列
    if (n == 0 || n == 1) {
        return n;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}
int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    printf("斐波那契数列第%d项的值为:%d\n", n, fibonacci(n));
    return 0;
}
```
解析:该程序定义了一个递归函数fibonacci,当n为0或1时,递归结束,返回n;否则,返回fibonacci(n-1)与fibonacci(n-2)的和。在主函数中,用户输入一个正整数n,调用fibonacci函数计算并输出斐波那契数列的第n项的值。
三、递归求和
题目:编写一个递归函数,计算给定正整数n的所有数字的和。
答案:
```c
#include <stdio.h>
int sumDigits(int n) {
    if (n == 0) {
        return 0;
    } else {
        return (n % 10) + sumDigits(n / 10);
    }
}
int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    printf("%d的所有数字之和为:%d\n", n, sumDigits(n));
    return 0;
}
```
解析:该程序定义了一个递归函数sumDigits,当n为0时,递归结束,返回0;否则,返回n的个位数与sumDigits(n/10)的和。在主函数中,用户输入一个正整数n,调用sumDigits函数计算并输出所有数字之和。
通过以上三个递归题目的介绍和答案解析,希望能够帮助读者更好地理解和掌握C语言中递归的概念和用法。在实际编程中,递归是一种非常常见和有用的思维方式,能够简化问题的解决过程。同时,需要注意递归的结束条件和递归的效率,避免出现无限递归或重复计算的情况。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。