计算直到n-1为止的所有数字的幂

标签 c

给定 n,程序应计算 1^1 + 2^2 + 3^3 + ... 直到 n-1^n-1。下面是我的代码,其中 while 循环中有一个函数,并且传递的值来自函数中的 n-1 。函数定义有两个返回 ans 的变量。输出总是错误1。

#include <stdio.h>
#include <stdlib.h>

int power(int x, int y)
{
    int la, ans;
    if(y==0)
        return 1;
    else
        la= (x*power(x, y-1));  
        ans+=la;
        return ans;
}
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        int n, m, a, b, res, res1;
        scanf("%d%d", &n, &m);
        while(n-- && n>0)
        {
            a = power(n-1, n-1);
        }
        printf("%d", a);
    }
    return 0;
}

最佳答案

您的代码中存在一些问题。

  1. 正如另一个答案中所指出的,您的power功能已损坏:

    • ans 未初始化
    • { }else
    • 之后丢失
  2. while中,你计算了x^x,但是你忘记了结果,而你 应该总结一下。

  3. while 循环中做的第一件事是减少 n 并计算 power(n-1, n-1) 这听起来不合逻辑。

因此,您更正后的代码可能是:

#include <stdio.h>
#include <stdlib.h>

int power(int x, int y)
{
    if(y==0)
        return 1;
    else
        return x*power(x, y-1);  
}
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        int n, m, b, a = 0;
        scanf("%d%d", &n, &m);
        while(n>1)
        {
            --n;
            b = power(n, n);
            a += b;
            printf("%d^%d -> %3d\n",n, n, b);                
        }
        printf("sum= %d", a);
    }
    return 0;
}

n = 6 时给出:

5^5 -> 3125
4^4 -> 256
3^3 ->  27
2^2 ->   4
1^1 ->   1
sum=3413

关于计算直到n-1为止的所有数字的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533290/

相关文章:

c++ - 为什么 std::FILE 是大写字母?

sql - 如何在 Oracle Pro*C 中显示包含主机变量值的 SQL 语句?

c - MinGW 不输出可执行文件或目标文件

C - 编译静态文件

c - STM32闪烁代码仅在进入 Debug模式时有效

c - 内存中的 Int 地址增加 4

c - 在整个程序的头文件中共享变量和结构

c - asprintf() : how to free the pointers?

c - 程序员如何在C之上开发出一种编程语言?

c - atmega嵌入式C编程