C语言递归

学数据结构与算法学到了递归,有些题目比较难以理解,所以先练习了些基础的递归,慢慢理解

斐波那契数列

#include<stdio.h>

int feibo(int n)    // 输入要求第n项斐波那契数
{
    if (n <= 2)
        return 1;
    else
        return feibo(n - 1) + feibo(n - 2);
}

void main()
{
    int n;
    printf("请输入你要求得第几项斐波那契数:");
    scanf("%d", &n);
    printf("%d", feibo(n));
}

n的k次方

#include<stdio.h>

int nk(int n, int k)
{
    if(k == 0)
        return 1;
    else if(k == 1)
        return n;
    else
        return n * nk(n, k - 1);
}

int main(void)
{
    int n, k;
    printf("请分别输入n和k:");
    scanf("%d %d", &n, &k);
    printf("%d", nk(n, k));
    return 0;
}

整数各位数字之和

#include<stdio.h>

int DigitSum(int n)
{
    if(n < 10)
        return n;
    else
        return n % 10 + DigitSum(n / 10);
}

int main(void)
{
    int n;
    printf("请输入你要求各位数字和的正整数:");
    scanf("%d", &n);
    printf("%d", DigitSum(n));
    return 0;
}

逆转字符串

#include<stdio.h>

void ReverseString(char *n)
{
    // 使用数组指针移位
    if (*(++n) != '\0')
        ReverseString(n);
    printf("%c", *(n - 1));
}

int main(void)
{
    char n[100];
    printf("请输入\n逆转前的字符串:");
    scanf("%s", n);
    printf("逆转后的字符串:");
    ReverseString(n);
    return 0;
}

求字符串长度

#include<stdio.h>

int length(char *n)
{
    if(*n == '\0')
        return 0;
    else
        return 1 + length(n + 1);
}

int main(void)
{
    char n[100];
    printf("请输入字符串:");
    scanf("%s", n);
    printf("%d", length(n));
    return 0;
}
最后修改:2021 年 10 月 25 日
如果觉得我的文章对你有用,请随意赞赏