你如何在 C Sharp 上使用指数返回 1、1+1、1+1+1?

How do you return 1, 1+1, 1+1+1, using exponents on C Sharp?

提问人:Hector Mellen 提问时间:9/27/2022 最后编辑:Hector Mellen 更新时间:11/16/2022 访问量:81

问:

我是一个使用 C# 的新手,试图弄清楚如何在第一次迭代中运行 for 循环以输出 1,然后在第二次迭代中输出 1+1,在第三次迭代中输出 1+1+1,依此类推。为了解决这个问题,我首先为值 i = 1 放置一个 if 语句,以便它使用方程 (i-1) 10^i-1 * 1 输出 1,然后对于 i>1,我写 i = 10^(i-1) + 1。但是,当我运行该程序时,它告诉我我有未分配的局部变量,并且没有对应于 Math Pow 的 y(double、double)的参数。到目前为止,我正在使用 Math.Pow 在 C sharp 中创建指数,除非有另一种更简单的方法。不确定这意味着什么?您对如何解决这个问题有什么建议吗?

非常感谢!

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/* Equation that helps 
 * i = (n-1)*(10^i-1) + 1 -> works only for i = 1
 * for i>1 i = (10^i-1) + 1 
 */
namespace PL1Week6Part1SumofSeries1_11_111_1111CSharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
        int i, sum;
        double d = Math.Pow(i - 1); 
        sum = 0;
        for (i=1; i >= 1; i++)
            {
                if (i == 1)
                {
                    i = ((i - 1) * 10^(i-1) + 1);
                    Console.Write("{0} +", i);
                    Console.ReadLine();
                }
                else
                {
                    sum = i + sum;
                    i = 10 ^ (i - 1) + 1;
                    Console.Write("{0} +", i);
                    Console.ReadLine();
                }
            }
        }
    }
}

C# 序列 指数

评论

3赞 frankM_DN 9/27/2022
不知道什么是用的,但此时没有定义,这意味着它没有值。并且您还需要为函数提供两个参数。double d = Math.Pow(i - 1);iMath.Pow()
0赞 wohlstad 9/27/2022
Math.Pow(i - 1): 1. 此时 i 未初始化, 2. 需要基数和指数: learn.microsoft.com/en-us/dotnet/api/....Pow
0赞 Hector Mellen 9/27/2022
谢谢,弗兰克,沃尔斯塔德。感谢您的输入!
9赞 Matthew Watson 9/27/2022
只需检查:您是否知道这是排他性 OR 运营商,而不是电源运营商?^
1赞 Palle Due 11/16/2022
“While I'm running the program”:您没有运行该程序,因为它无法编译。您正在从编译器中获取错误消息。如果您知道其中的区别,您的老师将不胜感激。

答:

1赞 Olivier Jacot-Descombes 11/16/2022 #1

我假设你想创建一系列 s,如 1、11、111、...而不是添加 s。然后你可以通过将 10 的幂相加来做到这一点。为此,您不需要电源功能。只需从 1 开始,然后在每次循环迭代时将此值乘以 10。我将使用 ,因为它最多允许 19 位数字。11long

int numberOfDigits = 4; // As an example. Works up to 19.
long sum = 0;
long digit = 1;
for (int i = 0; i < numberOfDigits; i++) {
    sum += digit;
    digit *= 10;
}
Console.WriteLine(sum);

一个完全不同的解决方案通过首先计算 10 的幂来创建 1 的级数,例如 104 = 10000,然后减去 1 得到 9999,最后除以 9 得到 1111。

int numberOfDigits = 4; // Works up to 18.
Console.WriteLine(((long)Math.Pow(10, numberOfDigits) - 1) / 9);

两个示例都打印 .1111