1. 程式人生 > 其它 >題21:編寫函式字串長度,要求不使用strlen()函式,抑或不使用遞迴的方法

題21:編寫函式字串長度,要求不使用strlen()函式,抑或不使用遞迴的方法

技術標籤:程式設計 題

//編寫函式不允許使用strlen(),求字串長度
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int my_strlen(char* str)//陣列傳參不是整個陣列,而是首元素的地址
{//既然是地址,那就引*p,根據地址找名字
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;//移動指標的辦法,是++
	}
	return count;
}
int main()
{
	char arr[]
= "bit"; //int len = strlen(arr);//strlen數字符串長度,是不含\0的 //printf("%d", len); int len = my_strlen(arr); printf("len=%d\n",len); return 0; }

以下是用遞迴方法

//編寫函式使用遞迴方法,求字串長度
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int my_strlen(char* str)
{
if (*str != '\0') return 1 + my_strlen(str + 1); else return 0; } int main() { char arr[] = "bit"; //int len = strlen(arr);//strlen數字符串長度,是不含\0的 //printf("%d", len); int len = my_strlen(arr); printf("len=%d\n",len); return 0; } //整理思路,遞迴的方法,大事化小 //my_strlen("bit"),可以分解成為
//1+my_strlen("it"),這兩部分,再進一步是 //1+1+my_strlen("t"),這三部分,再進一步是 //1+1+1+my_strlen(""),這四部分。 //這樣1+1+1+0=3

在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述
看懂遞迴的程式,就得畫圖,直觀看是看不出來得,分成2部分,然後再丟擲其中一部分,分析剩下得部分,還是再分2部分,每次都要拋去一部分,不斷得把問題層層簡化。
遵循一個原則:
判斷條件寫停下來;
函式內容寫不斷的趨近停下來。