Напишите рекурсивную функцию threeplustwo, которая принимает аргумент (n), суммирует все числа, делящиеся на 2 + все числа, делящиеся на 3 из диапазона(от 1 до n-1).
это типовой код ответа (который я не понимаю )
int threePlusTwo (int n) { if (n <= 2) return 0; if (n == 3) return 2; int twoSum = (n - 1) % 2 == 0? (n - 1): 0; int threeSum = (n - 1) % 3 == 0? (n - 1): 0; return twoSum + threeSum + threePlusTwo(n - 1); }
Что я уже пробовал:
#include<stdio.h> #include<stdlib.h> int tpt(int n) { if(n==1) return 0; if(n%3==0||n%2==0) return n+tpt(n-1); return tpt(n-1); }
проблема с моим кодом заключается в том, что тестовый случай n>=6 суммирует 6 только один раз из-за условия||...есть идеи как это сделать измените мой код, чтобы пройти этот тестовый случай?!
CHill60
Что такого есть в ответе модели, что вы не понимаете - вы использовали все конструкции в своем собственном коде, кроме тернарного/условного оператора ?: - Как использовать условный (тернарный) форум ope - C++ [^]