C++ 中查找前 N 个 Iccanobif 数的程序

2025年3月25日 | 阅读 4 分钟

在本文中,我们将讨论如何在 C++ 中查找前 N 个 Iccanobif 数。在进行实现之前,我们必须了解 C++ 中的 Iccanobif 数。

什么是 C++ 中的 Iccanobif 数?

Iccanobif 数斐波那契数类似。像斐波那契数一样,Iccanobif 数取决于序列中前两个数。为了得到序列中的当前数,我们必须首先反转 Iccanobif 数中最后两个数的顺序,然后将它们相加。值得注意的是,“Iccanobif”一词只是“Fibonacci”的反向拼写。此外,Iccanobif 序列中的前两个整数被初始化为 0 和 1。

例如

  • IN(0) = 0;
  • IN(1)= 1;
  • IN(2)= IN(1)+ IN(0) = 1+ 0= 1;
  • IN(3)= IN(2)+ IN(1)= 1+ 1= 2;
  • IN(4)= IN(3)+ IN(2)= 2+ 1= 3;
  • IN(5)= IN(4)+ IN(3)= 3+ 2= 5;
  • IN(6)= IN(5)+ IN(4)= 5+ 3= 8;
  • IN(7)= IN(6)+ IN(5)= 8+ 5= 13;

到目前为止,Iccanobif 数与斐波那契数完全相似。从下一个点开始,我们可以看到一些与斐波那契数不同的数。

  • IN(8) = rev(IN(7) )+ IN(6) = rev(13)+8 =31+8 = 39
  • IN(9) = rev(IN(8) )+ rev(IN(7)) = rev(39)+ rev(13) = 93+ 31= 124
  • IN(10)= rev(IN(9) )+ rev(IN(8)) = rev(124)+ rev(39) = 421+ 93= 514

这里我们可以使用 rev() 方法来反转数字的位数。我们直到找到 IN(7) 才进行数字的反转。因为直到 IN(7),我们得到的所有数字都是个位数,当我们反转个位数时,我们不会得到其他数字。例如,rev(4) = 5。因为即使我们反转数字,它也不会对直到 IN(7) 的数字产生任何影响,这些数字与斐波那契数相同。

Iccanobif 系列

从 39 开始,我们可以看到斐波那契数列和 Iccanobif 数列之间的区别。

示例 1:一种迭代方法来查找前 'N' 个 Iccanobif 数

输出

Program to find first N Iccanobif Numbers in C++

时间复杂度

在上面的程序中,计算的时间复杂度为 O(n)。

示例 2:递归方法来查找前 'N' 个 Iccanobif 数

输出

Program to find first N Iccanobif Numbers in C++

时间复杂度

在上面的程序中,每个递归调用都会导致两个以上的递归调用,这使得每个 Iccanobif 数的时间复杂度等于 2^n,其中 n 是 find() 方法的参数 num。