显示迭代的次数- c++
Displaying the number of iterations - C++
下面是查找Lychrel数的代码(到目前为止它还不完美,但这对问题并不重要:
#include <iostream>
int Reverse(int number)
{
int rem = 0;
while (number > 0)
{
rem = (rem * 10) + (number % 10);
number = number / 10;
}
return rem;
}
bool is_Palindrome(int num)
{
return (num == Reverse(num));
}
bool isLychrel(int num, const int iterCount = 50)
{
int temp = num;
int rev;
for (int i = 0; i < iterCount; i++)
{
rev = Reverse(temp);
if (is_Palindrome(rev + temp))
return false;
temp = temp + rev;
}
return true;
}
int main()
{
bool l = isLychrel(some number);
std::cout << l << "n";
return 0;
}
我想做的是,除了显示它是否为Lychrel数之外,我想显示发现回文需要多少次迭代。所以我知道我必须定义一个int I = 0,但我不知道在哪里,也不知道如何让它工作。我尝试在循环之外执行,像这样:
int i = 0;
{
int temp = num;
int rev;
for (int i = 0; i < iterCount; i++)
{
rev = Reverse(temp);
if (is_Palindrome(rev + temp))
return false;
temp = temp + rev;
}
return true;
}
但我得到错误"预期的非限定id"之前{"token"answers"预期的初始化器之前'int'"。我不知道把它放在哪里才能使它起作用。
如果你想在循环外重用"i",那么你需要将初始化器从for循环中取出。
改变这个
for (int i = 0; i < iterCount; i++)
,
for ( i < iterCount; i++)
否则我建议使用while循环。
编辑:关于变量作用域的更多信息,我推荐这个教程
我不确定你的问题到底是什么。你的函数"isLychrel"目前返回false,如果已知输入在输入迭代的最大次数内不是一个Lychrel数,否则返回true。您是否希望您的函数也返回实际执行的迭代次数?如果是这样,您可以在签名中提供对整数变量的引用,以接收实际的迭代次数。
也就是说,你的函数可以像这样
bool isLychrel(int num, int& ornNumIters, const int iterCount = 50)
{
int temp = num;
int rev;
for (int i = 0; i < iterCount; i++)
{
rev = Reverse(temp);
if (is_Palindrome(rev + temp))
{
ornNumIters = i;
return false;
}
temp = temp + rev;
}
ornNumIters = iterCount;
return true;
}
你可以这样称呼它:
int nActualIterations = 0;
bool bResult = isLychrel(89,nActualIterations);
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 迭代时从向量和内存中删除对象
- 如何在c++迭代器类型中包装std::chrono
- 带过滤器的现代迭代c++集合
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- C++矢量迭代
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 擦除while循环中迭代的元素
- 实现一个在集合上迭代的模板函数
- 对于set上的循环-获取next元素迭代器
- 在向量内的向量上迭代
- 为什么output_editor Concept不需要output_e迭代器标记
- TSP递归解的迭代形式
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- std::vector::迭代器是否可以合法地作为指针
- 跟随整数索引列表的自定义类迭代器