c++ - 递归回文函数中的访问冲突写入位置?
问题描述
不久前我开始学习 C++,并试图编写一个递归函数来确定一个整数是否是回文数(即 12421 应该返回 true,而 123 应该返回 false)。我可以迭代地做到这一点,但给定的任务是使用递归,并且使用一个只需要一个输入的函数——这里命名为 test。唉,为此我不允许修改函数以接受更多输入,否则肯定会更容易。
这是我到目前为止的代码,我不知道为什么它不起作用。我在这里尝试的方法是取整数,找到它的长度以及第一个和最后一个数字,然后递归地将测试值放回函数中,“删除”第一个和最后一个数字,以便继续比较直到我达到了基本情况(test==0)。临时变量......相当尴尬,但我不知道如何在不修改原始输入的情况下使用它。
当我在 Visual Studio 中运行它时,它会在第二行显示一条消息:“ispalindrome.exe 中 0x002D0C99 处抛出异常:0xC0000005:访问冲突写入位置 0x00600F3C。” 为什么会这样?任何帮助将不胜感激。
bool is_palindrome(int test)
{
int length = 1, firstDigit, lastDigit;
int temp = test;
int temp2 = test;
int temp3 = test;
while (temp > 0)
{
temp /= 10;
length++;
}
while (temp2 >= 10)
{
temp2 /= 10;
}
firstDigit = temp2;
lastDigit = temp3 % 10;
if (test==0)
return firstDigit == lastDigit;
else
{
is_palindrome(test-(firstDigit*length)-lastDigit);
}
}
解决方案
推荐阅读
- python - 如何根据 ID 和日期计算运行总和
- javascript - 如何在laravel中获取调用字符串变量到Javascript
- database - Wordpress 第 5 版每天都要求更新数据库
- python - 如何在 django 中扩展管理器方法?
- c++ - Cmake链接器命令无法生成可执行文件
- record - 管理包含大量字段的表单
- material-ui - 如何更改 CardActionArea / ButtonBase 的悬停状态
- javascript - 从 HTML 的下拉菜单中选择选项时禁用 div
- javascript - 从 fetch() 返回 html 并显示给用户
- c# - 如何在 ItemCollection 中找到具有特定属性的项目?