1. 要求
- 输入一个非负整数,求各位数之和(input123,output1+2+3=6);
- 递归法;
- 求n 的 k 次方时不得直接调用内部函数pow(x, y);
2. 代码
2.1.1 递归法求非负整数各位数之和
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
int DigitSum(int x)
{
if (x / 10 != 0)
return DigitSum(x / 10) + x % 10;
else
return x;
}
int main()
{
int num = 0;
printf("请输入一个非负整数>:");
scanf("%d", &num);
int sum = DigitSum(num);
printf("%d的各个位数之和等于%d\n", num, sum);
return 0;
}
2.1.2 迭代法求非负整数各位数之和
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
int main()
{
int num = 0;
int sum = 0;
printf("请输入一个非负整数>:");
scanf("%d", &num);
int tmp = num;
while (num > 0)
{
sum += num % 10;
num /= 10;
}
printf("%d的各个位数之和等于%d\n", tmp, sum);
return 0;
}
2.2 递归法求 n 的 k 次方
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
double Pow(int x, int y)
{
if (y > 0)
return x * Pow(x, y - 1);
else if (y == 0)
return 1.0;
else
return 1.0 / Pow(x, -y);
}
int main()
{
int n, k;
printf("输入n和k>:");
scanf("%d %d", &n, &k);
double ret = Pow(n, k);
printf("%d的%d次方等于%lf\n", n, k, ret);
return 0;
}
3. 总结
要注意的就是求 n 的 k 次方时,n和k都得为整数;其次就是,如果k为负数的时候,返回值为小数,得返回double类型的值。< 好好学习,天天向上