Loading... # C语言递归 学数据结构与算法学到了递归,有些题目比较难以理解,所以先练习了些基础的递归,慢慢理解 ## 斐波那契数列 ~~~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次方 ~~~C #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; } ~~~ ## 整数各位数字之和 ~~~C #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; } ~~~ ## 逆转字符串 ~~~C #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; } ~~~ ## 求字符串长度 ~~~C #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 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏