小编Lil*_* Ho的帖子

递归程序不适用于大输入

我试图从这个网站写一个问题的答案 - https://main2.edu.pl/c/kurs-podstaw-algorytmiki-druga-e/p/kro/

这是关于递归课程的补充,所以我想出了一个使用它的代码。它应该显示(a+1)^b modulo-10000 余数。不幸的是,对于小数字,我的程序有效,但是当它达到更大的数字时,它只是......不会 - 例如:


a = 1
b = 4
输出是16,这是正确的。


a = 2
b = 3
输出是27,这是正确的。

a = 2
b = 100
它给了我输出-8495,这是完全不正确的。

我试图寻找它,但我没有找到解决我的问题的正确方法,因为我真的不知道发生了什么。我在想,也许是因为数据类型太小,但将int更改为long int,并没有改变任何东西。

这是我的代码:

#include <iostream>
using namespace std;

int pot(int a, int b){
    if (b == 1)
        return a;
    if (b % 2 == 0) //test for even number
        return pot(a, b / 2) * pot(a, b / 2); …
Run Code Online (Sandbox Code Playgroud)

c++ recursion

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

标签 统计

c++ ×1

recursion ×1