Wątek przeniesiony 2018-12-09 15:08 z C/C++ przez kq.

Mały fragment kodu w C++

0

Problem jest banalny. Nie jestem programistą i z tego względu zwracam się o pomoc do Kogoś z Was.
Czemu banalny? Bo chodzi o napisanie dwóch kodów, które mógłbym sobie przeanalizować lub zmodyfikować wedle uznania.
Kto by mi pomógł zaimplementować dodawanie rekurencyjne dwóch liczb naturalnych.
Ja mam coś takiego, ale nie wiem czy to do końca się nadaje. Najlepiej C++

funkcja x = suma (m,n) 
if n<= 0 
x=m; 
else 
r=m+suma(m+1,n-1);
end
end

Czy ktoś by pomógł jak można pokazać rekurencyjnie mnożenie dwóch liczb naturalnych

potęga to na przykład takie coś:
potęga (x,n) to : 1 kiedy n=0 , x * potęga (x,n-1) kiedy n>0

a mnożenie: 0 kiedy n=0 , m kiedy n=1, mnoz(m,n-1)+m kiedy n>0 i n różny od 0 .

Może Ktoś pomoże bym mógł poddać problem do swojej analizy:)

1

Tu Masz programik:

#include <iostream>

int recursive_add(int n, int a);
int recursive_mul(int n, int a);

int main(){
	std::cout << recursive_add(0, 1) << "\n"; // -> 1
	std::cout << recursive_add(2, 1) << "\n"; // -> 3
	std::cout << recursive_mul(0, 1) << "\n"; // -> 0
	std::cout << recursive_mul(3, 2) << "\n"; // -> 6
	return 0;
}

int recursive_add(int n, int a){
	if (n == 0)
		return a;
	else
		return 1 + recursive_add(n - 1, a);
}

int recursive_mul(int n, int a){
	if (n == 0) 
		return 0;
	else
		return a + recursive_mul(n - 1, a);
}

Funkcie implementują bezpośrednio definicje rekurencyjne:

  • dodawania:
    0 + a = a
    (1 + n) + a = 1 + (n + a);
  • mnożenia:
    0a = 0
    (1 + n)a = a + na;
    To ostatnie, można mocno ulepszyć:)

https://en.wikipedia.org/wiki/Recursive_definition

1 użytkowników online, w tym zalogowanych: 0, gości: 1