我解决了一个递归问题,其中函数int stairs(int n)返回爬楼梯到n的可能性的数量,条件是采取1步或2步.以下代码解决了这个问题:
int stairs(int n)
{
if (n<0) return 0;
if (n==0) return 1;
return stairs(n-1) + stairs(n-2);
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个约束条件:如果你到了20楼,你必须使用一台自动将你带到第n层的电梯.如果由于某种原因你跳过20级(例如,达到19级然后爬2层到21级),继续照常.找出上述约束的可能性数量.到目前为止我所做的是:
int stairs20(int n)
{
if (n<=20) return stairs(n);
return stairs(20) + stairs(n-21);
}
Run Code Online (Sandbox Code Playgroud)
代码背后的逻辑是计算到达20楼的可能性的数量,以及21楼及以上的可能性的数量.我认为这不能找回正确的答案,并希望了解我的错误在哪里或我不算什么?
我正在编写一个简单的代码来从C中的字符串中删除空格但是我在编译后得到以下消息:EXC_BAD_ACCESS(code = 2,adresss = ....).它来自'*temp =*str'这一行然而我不明白为什么?我该如何解决?
void removeSpaces(char * str)
{
char * temp = str;
while (*str != '\0') {
if (*str != ' ') {
*temp = *str;
temp++;
}
str++;
}
*temp = '\0';
}
Run Code Online (Sandbox Code Playgroud)