Násobenie rekurziou
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Násobenie rekurziou
Vedel by niekto vytvoriť program, ktorý pomocou rekurzie vynásobí dve čísla načítané zo súboru, ale môže sa použiť iba jedna premenná? Už sa s tým trápim a došli nápady.
Budem vďačný za každú radu ktorá ma posunie vpred
Budem vďačný za každú radu ktorá ma posunie vpred
Kód: Vybrať všetko
#include <stdio.h>
int nasob(int a, int b)
{
if (b == 0)
return 0;
return a + nasob(a, b-1);
}
int main(void)
{
printf("%i\n", nasob(11, 13));
}-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
nie nepotrebuje.. už som na to prišiel (btw: ty ešte nevieš že ja som delphi user a ty mi sem hodíš céčko? hehe.. )
ale dík za ochotu
Kód: Vybrať všetko
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a:integer;
vstup:textfile;
implementation
{$R *.dfm}
function sucin:integer;
begin
if a>1 then begin
a:=a-1;
sucin:=sucin + a;
end else begin
read(vstup,a);
sucin:=a;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Assignfile(vstup,'cisla.txt');
Reset(vstup);
Readln(vstup,a);
showmessage(IntToStr(sucin));
Closefile(vstup);
end;
end.-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
neviem sice aky zmysel ma toto smrtelne riesenie ale ide to aj bez premennej (je to java, mozete to brat ako pseudokod)
Kód: Vybrať všetko
public class HaluzNasobenie
{
static int vynasob(Scanner subor)
{
if (subor.hasNextInt())
return subor.nextInt() * vynasob(subor);
else
return 1;
}
public static void main(String[] args) throws FileNotFoundException
{
Scanner scan = new Scanner(new File("in.txt"));
System.out.println(vynasob(scan));
}
}
-
makaveli
King
- Príspevky: 1688
- Registrovaný: 17 okt 2005, 20:55
- Bydlisko: Brno
- Kontaktovať používateľa:
neviem, ako spravit to nacitanie premennych zo suboru, ale vynasobenie dvoch cisel rekurziou bez pouzitia akejkolvek premennej, sa da spravit takto, pomocou funkcionalneho programovacieho jazyka haskell:
Kód: Vybrať všetko
vynasob x 0 = 0
vynasob 0 y = 0
vynasob x 1 = x
vynasob x y = x + (vynasob x (y-1))-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa: