#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int DigitSum(int n) {
int y = 0;
int x = 0;
if (n != 0){
x = n % 10;
n = n / 10;
y = x + DigitSum(n);
}
return y;
}
int main() {
int a,b;
printf("请输入一个数,求它每一位数之和:\n");
scanf("%d", &a);
b = DigitSum(a);
printf("%d\n", b);
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int strlen1(char* str){
int a = 0;
while (*str != '\0'){
a++;
str++;
}
return a;
}
int strlen2(char* str){
if (*str != '\0'){
return 1 + strlen2(str + 1);
}
else{
return 0;
}
}
int main(){
char arr[21];
printf("请输入需要实现strlen的字符串(20个字符以内):");
scanf("%s", &arr);
int x = strlen1(arr);
printf("非递归:%d\n", x);
int y = strlen2(arr);
printf("递归为:%d\n", y);
system("pause");
return 0;
}
6 递归和非递归分别实现求n的阶乘
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int fun1(int n) {
if (n <= 1) {
return 1;
}
else {
return n * fun1(n - 1);
}
}
int fun2(int m) {
int sum = 1;
while (m > 1) {
sum *= m;
m -= 1;
}
return sum;
}
int main() {
int a,b,c;
printf("求a的阶乘,请输入a:");
scanf("%d", &a);
b = fun1(a);
printf("递归结果为:%d", b);
printf("\n");
c = fun2(a);
printf("非递归结果为:%d", c);
printf("\n");
system("pause");
return 0;
}
7 递归方式实现打印一个整数的每一位
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void fun(int n) {
if (n > 9) {
fun(n / 10);
}
printf("%d ", n % 10);
}
int main() {
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("其每一位分别为:");
fun(x);
printf("\n");
system("pause");
return 0;
}