小编Bia*_*ach的帖子

C++ 中的递归与迭代阶乘

我做了一个糟糕的 c++ 程序来计算输入值的阶乘,其中我编写了两个函数来独立进行实际计算(一个迭代,另一个递归)。对我来说没有任何意义的是,为什么迭代阶乘会在 n = 13 左右崩溃,但递归一直到 unsigned long long int 的上限?

PS 我很高兴收到有关我的代码质量的任何建议,并很乐意对其进行修改,谢谢。

#include <iostream>
using namespace std;

unsigned long long int rekursiv_fak (int); // function prototyping
unsigned long long int iterativ_fak (int);

int main () {
  unsigned int n; // factorial is defined only for positive integers !!
  cout << "Enter a positive integer value: ";
  cin >> n;
  cout << "The factorial of " << n << " is equal to: " << iterativ_fak(n) << " or …
Run Code Online (Sandbox Code Playgroud)

c++ iteration recursion factorial

2
推荐指数
1
解决办法
204
查看次数

重载或重写 equals() 方法

我对以下场景中首先调用的内容有点困惑:

我有一个包含姓名和年龄的 Person 类。

public class Person {
  private int age;
  private String name;

  //constructor, getters, ...
}
Run Code Online (Sandbox Code Playgroud)

我现在尝试比较Person具有相同字段值的两个单独的对象,即相同的名称、相同的年龄

System.out.println(person1.equals(person2));
Run Code Online (Sandbox Code Playgroud)

我显然收到了一个false返回值,因为我还没有重写该equals(Obj object)方法。

但是假设我不重写它,而是编写另一个equals()仅带有参数的方法Person

public equals(Person person) {
  return person.get_age()==this.age && person.get_name().equals(this.name);
}
Run Code Online (Sandbox Code Playgroud)

现在调用哪个方法以及为什么?下面的行仍然返回false

System.out.println(person1.equals(person2));
Run Code Online (Sandbox Code Playgroud)

除非我强迫person2被解释为Person. 因此下面的行返回true

System.out.println(person1.equals((Person)person2));
Run Code Online (Sandbox Code Playgroud)

这就是令我困惑的地方,我现在删除了该类型转换,Person并且由于某种原因,当我一次又一次地构建和运行代码时,它不断返回truefalse强制它再次开始返回(即再次继续采用默认方法)的唯一方法equals(Object obj)是删除该equals(Person person)方法,运行代码一次,然后粘贴回我刚刚删除的方法。现在,这种比较又false再次出现了。

JVM 是否缓存了某些中间状态?老实说,我对java有点陌生。

java oop overriding

2
推荐指数
1
解决办法
450
查看次数

C++中的IF嵌套

嘿,只是通过一些教科书示例来介绍我的 C++ 入门课程,如果有人能澄清为什么以下代码产生 51 的输出(我希望它不会产生任何输出),我将非常感激,非常感谢!:

#include <iostream>
using namespace std;

int main()
{
  constexpr int a{9};
  constexpr int b{1};
  constexpr int c{5};

  if (a < b < c)
    if (c > b > a)
      if (a > c) cout << 91;
      else cout << 19;
    else
      if (b < c) cout << 51;
      else cout << 15;
  else 
    if (b < a < c)
      if (a < c) cout << 95;
      else cout << 59;
    else
      if (b < c) …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement nested

1
推荐指数
1
解决办法
58
查看次数

标签 统计

c++ ×2

factorial ×1

if-statement ×1

iteration ×1

java ×1

nested ×1

oop ×1

overriding ×1

recursion ×1