Как я могу ввести этот код C++ в дартс
Я должен сделать этот код C++ в Dart, но я нахожу это действительно трудным. Я пытался смотреть видео Дартс и искать в Интернете, но безуспешно. Может ли кто-нибудь помочь мне? Это код:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
if (n < 0) return 1;
int sum = 0;
int i = 0;
while (i <= n) sum += i*i;
cout << sum;
return 0;
}
2 ответа
Что -то вроде
library x;
import 'dart:io';
void main(List<String> args) {
int n;
print('input a number');
String input = stdin.readLineSync();
n = int.parse(input);
print('n: $n');
if(n < 0) {
exit(1);
}
int sum = 0;
int i = 0;
while(i <= n) {
print(sum);
sum += i * i;
}
print(sum);
}
Но не ожидайте многого. При достижении цикла while sum
а также i
равны 0. Таким образом, вы создали хороший бесконечный цикл, чтобы занять ваш компьютер;-)
Вы можете выполнить бит вычисления (сумма квадратов всех чисел от 1 до n включительно) с помощью рекурсивной функции, например:
int recur(int n) => (n > 0) ? (n * n) + recur(n - 1) : 0;
Тогда просто выяснить, как войти n
и вывод recur(n)
, Это можно сделать с stdin.readLineSync
а также print
, Это было бы по следующим направлениям:
int recur(int n) => (n > 0) ? (n * n) + recur(n - 1) : 0;
void main( List<String> args ) {
int inNum;
String input = stdin.readLineSync();
inNum = int.parse( input );
if (inNum < 0) {
exit( 1 );
}
print( recur( sum ) );
}
Просто будьте осторожны с большими входными значениями, я не уверен, что Дарт достаточно умен, чтобы выполнить хвостовую оптимизацию рекурсии. Если нет, может быть проблема с размером стека.