C 递归计算具有唯一值(无重复值)的两个字符串中的相等值
我需要编写一个递归函数,它接受字符串,每个字符串都没有重复的值,并且该函数计算两个字符串中出现的值的数量 例如,“1234”是一个可以传递给函数的值,而“12343”中有2个“3” 我写的函数是C 递归计算具有唯一值(无重复值)的两个字符串中的相等值,c,recursion,C,Recursion,我需要编写一个递归函数,它接受字符串,每个字符串都没有重复的值,并且该函数计算两个字符串中出现的值的数量 例如,“1234”是一个可以传递给函数的值,而“12343”中有2个“3” 我写的函数是 int func(char* str1,char* str2) { if(*str1 == '\0' || *str2 == '\0') return 0; if(*str1 == *str2) return 1 + func(str1+1,str2+1) ; else ret
int func(char* str1,char* str2)
{
if(*str1 == '\0' || *str2 == '\0') return 0;
if(*str1 == *str2) return 1 + func(str1+1,str2+1) ;
else return (func(str1,str2+1) + func(str1+1, str2)) ;
}
它并不是在所有情况下都有效
范例
str1=“12346”,str2=“74321”,结果4请给出准确输入、预期结果和实际结果的示例。这些字符串是否已“排序”(如“01367”或“1234”)?“12343”是不能传递的字符串的示例吗?如果任一字符串到达末尾,则第一个
将停止。也就是说,func(“12345”,”)
将返回0
。这是有意的还是应该继续在非空字符串上操作?我想我不清楚这两个字符串之间的关系到底应该是什么,因为你没有解释清楚。@Bob_uuuuu字符串不是sorted@kaylum用您的说明更新了问题