问题描述:
递归和非递归分别实现strlen ,来计算字符串长度。
思路:
方法一:递归
1、键入要求的字符串;
2、判断字符串是否为空,为空返回0;不为空返回strlen(a+1)+1;a+1表示字符串后移一位;+1表示字符串长度+1;
3、打印结果
方法二:
1、键入要求的字符串;
2、判空,空则返回0;不为空则循环,count自增;
3、打印结果
源代码:
方法一:递归
#include <stdio.h>
#include <windows.h>
#pragma warning (disable :4996)
int strlen1(char a[])//递归
{
if (a[0] == '\0')
{
return 0;
}
return strlen1(a + 1) + 1;
}
int main()
{
char arr[100];
gets(arr);
int count = strlen1(arr);
printf("字符串长度为:%d\n", count);
system("pause");
return 0;
}
方法二:非递归
#include <stdio.h>
#include <windows.h>
#pragma warning (disable :4996)
int strlen2(char a[])//非递归
{
int count = 0;
while (a[count] != '\0')
{
count++;
}
return count;
}
int main()
{
char arr[100];
gets(arr);
int count = strlen1(arr);
printf("字符串长度为:%d\n", count);
system("pause");
return 0;
}