递归练习题(n的k次方、一个数的每位之和、求n的阶乘、打印一个整数的每一位)

📅 发布时间:2026/7/5 13:38:12 👁️ 浏览次数:
递归练习题(n的k次方、一个数的每位之和、求n的阶乘、打印一个整数的每一位)
递归函数自己调用自己非递归通过循环的方式利用变量反复更新状态计算斐波那契数计算斐波那契数递归、迭代11235.....)-CSDN博客递归实现n的k次方编写一个函数实现n的k次方使用递归实现思路n的k次方n*n的k-1次方#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //编写一个函数实现n的k次方使用递归实现 int f(int n,int k) { if (k 1) { return n; } else { return n * f(n, k-1); } } int main() { int r f(3, 3); printf(%d, r); return 0; }计算一个数的每位之和递归实现写一个递归函数DigitSum(n)输入一个非负整数返回组成它的数字之和例如调用DigitSum(1729)则应该返回1729它的和是19输入1729输出19思路如果这个整数大于一位数则通过%10取余数相加1729%10余9然后要1729/10172还要取余数和之前的余数相加剩下的部分直接交给下一层去算所以加上调用自己除以10得到的结果#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //写一个递归函数DigitSum(n)输入一个非负整数返回组成它的数字之和 //例如调用DigitSum(1729)则应该返回1 7 2 9它的和是19 //输入1729输出19 int DigitSum(int n) { if (n 10) { return n; } return n % 10 DigitSum(n / 10); } int main() { int n 0; scanf(%d, n); int r DigitSum(n); printf(%d, r); return 0; }求阶乘递归和非递归分别实现求n的阶乘不考虑溢出的问题递归思路n! n * (n-1)!#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //递归实现求n的阶乘不考虑溢出的问题 int f(int n) { if (n 1) { return n; } else { return n * f(n - 1); } } int main() { int n 0; scanf(%d, n); int r f(n); printf(%d, r); return 0; }非递归思路准备一个容器循环n次把数字扔到容器里相乘#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //非递归实现求n的阶乘 int f(int n) { int result 1; for (int i 1; i n; i) { result result * i; } return result; } int main() { int n 0; scanf(%d, n); int r f(n); printf(%d, r); return 0; }打印一个数的每一位递归方式实现打印一个整数的每一位思路如果一个整数大于一位数则让它/10不大于的话就%10直接输出#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h //递归方式实现打印一个整数的每一位 //123 1 2 3 void f(int n) { if (n 9) { f(n / 10); } printf(%d , n % 10); } int main() { int n 0; scanf(%d, n); f(n); return 0; }