小编use*_*993的帖子

理解递归,c ++

对于下面的代码,有人可以告诉我为什么如果基本情况(n == 0)的返回值为0,函数总是返回"0"?我知道为了纠正这个功能,我只需要将"return 0"替换为"return 1",但是,我试图理解为什么它为下面的基本情况返回0.

谢谢你的帮助

int factorial(int n) { 
    if (n == 0) { 
        return 0; 
    } else {
        return n * factorial(n-1);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:希望下面的代码没有逻辑错误......

#include<iostream>
#include<math.h>
using namespace std;

long double factorial (long double n) {
    if (n==0) return 1;
    if (n<0) return -fabs((n*factorial(n+1)));
    return n*(factorial(n-1));
}

int main () {
    long double n;
    cout << "Enter a number: ";
    cin >> n;
    cout << "Factorial of " << n << " is " << factorial(n) <<endl; …
Run Code Online (Sandbox Code Playgroud)

c++ recursion factorial

-1
推荐指数
3
解决办法
366
查看次数

标签 统计

c++ ×1

factorial ×1

recursion ×1