提问人:Hector Mellen 提问时间:9/27/2022 最后编辑:Hector Mellen 更新时间:11/16/2022 访问量:81
你如何在 C Sharp 上使用指数返回 1、1+1、1+1+1?
How do you return 1, 1+1, 1+1+1, using exponents on C Sharp?
问:
我是一个使用 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();
}
}
}
}
}
答:
1赞
Olivier Jacot-Descombes
11/16/2022
#1
我假设你想创建一系列 s,如 1、11、111、...而不是添加 s。然后你可以通过将 10 的幂相加来做到这一点。为此,您不需要电源功能。只需从 1 开始,然后在每次循环迭代时将此值乘以 10。我将使用 ,因为它最多允许 19 位数字。1
1
long
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
评论
double d = Math.Pow(i - 1);
i
Math.Pow()
Math.Pow(i - 1)
: 1. 此时 i 未初始化, 2. 需要基数和指数: learn.microsoft.com/en-us/dotnet/api/....Pow
^