9.4. Napisati rekurzivnu funkciju void koja za dato n iscrtava trougao dimenzije n x n. Napr za n=7:

Opis programa: Na slici je prikazan odnos redova i kolona.

Slika 1. Sporedna dijagonala i+j = n+1

Listing programa:

/* 09413126 nacrtaj trougao */
#include <iostream> 
using namespace std; 

void ispis_prazno(int prazno) {  // f-ja ispis praznina prije znaka
    if (prazno == 0)   return;   // kraj ispisa prazno
    cout << " ";                 // 1 mjesto prazno i 1 za razmak izmedju znakova
  
    ispis_prazno(prazno - 1);    // ispis prazno; rekurzija
} 
  

void ispis_znak(int znak) {      // f-ja ispis znaka
    if (znak == 0)    return;    // kraj ispisa znakova?
    cout << "*";                 // ispisa znaka
  
    ispis_znak(znak - 1);        // ispis znaka; rekurzija
} 
  
void trougao(int n, int num) {   // upravljanje ispisom prznina i znaka
    if (n == 0) 
        return; 
    ispis_prazno(n - 1); 
    ispis_znak(num - n + 1); 
    cout << endl; 

    trougao(n - 1, num);          // upravljanjem ispisom; rekurzija
} 


int main() { 
    int broj;                     // broj redova 7
    cout<<"Broj redova: ";
    cin>>broj;
        cout<<endl;
    trougao(broj, broj);          // nacrtaj trouga n x n
    return 0; 
} 
Ispis na ekranu:

Index