递归和非递归分别实现求字符串长度
1.非递归:
#include<stdio.h>
int myStrlen(const char * str)
{
int i;
for (i = 0; str[i]; i++)//字符串遍历
{
;
}
return i;
}
int main()
{
printf("%d\n", myStrlen("asfdf"));
system("pause");
return 0;
}
2.递归实现
#include<stdio.h>
int myStrlen(const char * str)
{
if (*str!='\0')
{
return 1 + myStrlen(str + 1);
}
return 0;
}
int main()
{
printf("%d\n", myStrlen("asfdf"));
system("pause");
return 0;
}
递归方式实现打印一个整数的每一位
int printnum(int num)
{
if (num <= 0)
{
return;
}
printnum(num / 10);
printf("%d\n", num % 10);
}
int main()
{
printnum(1246);
system("pause");
return 0;
}
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
#include<stdio.h>
int DigitSum(int num)
{
if (num <= 0)
{
return 0;
}
return num % 10 + DigitSum(num / 10);
}
int main()
{
printf("%d\n",DigitSum(1246));
//printf()
system("pause");
return 0;
}