Функция двух сумм в R - PullRequest
0 голосов
/ 28 ноября 2018

Я пытался создать функцию, которая будет подбирать 2 числа в списке, которые имеют сумму целевого числа.

Может кто-нибудь сообщить мне, почему мой код не работает?

Спасибо!

TwoSum <- function(num, target) {
  for (i in 1:length(num) - 1) {
    for (j in i+1:length(num)) {
      if (num[i] + num[j] == target) {
        print("the numbers are:")
        print(paste0(num[i], num[j]))
        a <- a - 1
      }
    }
  }
  if (a == 1) {
    print("No pairs")
  }  
} 

a <- 1
num <- c(1,2,3,4,5)
target <- 7

TwoSum(num,target)

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы не должны использовать цикл для этого.Используйте combn вместо:

combs <- combn(num, 2)
combs[,colSums(combs) == target]
#     [,1] [,2]
#[1,]    2    3
#[2,]    5    4
0 голосов
/ 28 ноября 2018

Введите скобки во второй и третьей строке.

TwoSum <- function(num, target) {
  for (i in 1:(length(num) - 1)) {
    for (j in (i+1):length(num)) {
      if (num[i] + num[j] == target) {
        print("the numbers are:")
        print(paste0(num[i], num[j]))
        a <- a - 1
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...